func를 통해 df10과 df20 (및 더 많은 데이터 프레임)을 동시에 전달하고 이름을 계속 사용하려면 어떻게해야합니까?함수를 통해 여러 데이터 프레임을 동시에 전달
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': ['d','d','d','d','d','d','g','g','g','g','g','g','k','k','k','k','k','k'],
'B': [5,5,6,4,5,6,-6,7,7,6,-7,7,-8,7,-6,6,-7,50],
'C': [1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2],
'S': [2012,2013,2014,2015,2016,2012,2012,2014,2015,2016,2012,2013,2012,2013,2014,2015,2016,2014]
});
df10 = (df.B + df.C).groupby([df.A, df.S]).agg(['sum','size']).unstack(fill_value=0)
df20 = (df['B'] - df['C']).groupby([df.A, df.S]).agg(['sum','size']).unstack(fill_value=0)
def func(df):
df1 = df.groupby(level=0, axis=1).sum()
new_cols= list(zip(df1.columns.get_level_values(0),['total'] * len(df.columns)))
df1.columns = pd.MultiIndex.from_tuples(new_cols)
df2 = pd.concat([df1,df], axis=1).sort_index(axis=1).sort_index(axis=1, level=1)
df2.columns = ['_'.join((col[0], str(col[1]))) for col in df2.columns]
df2.columns = df2.columns.str.replace('sum_','')
df2.columns = df2.columns.str.replace('size_','T')
return df2
EDIT, 요청 당 인쇄 된 데이터 프레임.
인쇄 (df10) 인쇄 (df20는)
df10:
sum size
S 2012 2013 2014 2015 2016 2012 2013 2014 2015 2016
A
d 13 6 7 5 6 2 1 1 1 1
g -11 8 8 8 7 2 1 1 1 1
k -6 9 48 8 -5 1 1 2 1 1
df20:
sum size
S 2012 2013 2014 2015 2016 2012 2013 2014 2015 2016
A
d 9 4 5 3 4 2 1 1 1 1
g -15 6 6 6 5 2 1 1 1 1
k -10 5 40 4 -9 1 1 2 1 1
프린트 아웃은
df10과 df20이 어떻게 보이는지 샘플로 코드를 업데이트 할 수 있습니까? – Chuck
함수를 적용하고자하는 모든 DataFrames의 목록에 대해 'for' 루프를 사용하는 것이 가장 쉽다고 생각합니다. 비록 당신이'func' 이후에이 DataFrames로 무엇을하고 싶은가에 달려 있습니다. – josh