是否可以一次性创建多个数据帧?

2024-05-19 08:58:28 发布

您现在位置:Python中文网/ 问答频道 /正文

df = pd.DataFrame( {
   'A': ['d','d','d','f','f','f','g','g','g','h','h','h'],
   'B': [5,5,6,7,5,6,6,7,7,6,7,7],
   'C': [1,1,1,1,1,1,1,1,1,1,1,1],
   'S': [2012,2013,2014,2015,2016,2012,2013,2014,2015,2016,2012,2013]     
    } );

df = (df.B + df.C).groupby([df.A,df.S]).agg(['sum','size']).
      unstack(fill_value=0)
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)

我能一次运行df,df10,df20的代码吗?顺便说一句,在实际数据中,我将运行80个数据帧,代码如下:

^{pr2}$

Tags: 数据代码dataframedfsizevaluefillagg
1条回答
网友
1楼 · 发布于 2024-05-19 08:58:28
b_c_idx_locs = [df.columns.get_loc('B'), df.columns.get_loc('C')]

a = df.values[:, b_c_idx_locs]

df['B+C'] = a.sum(1)
df['B*C'] = a.prod(1)
df['B-C'] = -np.diff(a)
cols = ['B+C', 'B*C', 'B-C']

df.groupby(['A', 'S'])[cols].agg(['sum', 'size'])

enter image description here

相关问题 更多 >

    热门问题