我有一个数据帧,我想在其中根据分组id、count和sum进行转换
pod date1 pwr1 pwr2 position
aa q122 2 2 100
aa q122 0 4 100
bb q122 5 0 50
bb q122 5 0 50
bb q222 0 0 50
bb q322 0 5 50
bb q322 0 5 50
渴望的
pod date con retro final re_space
aa q122 2 6 -4 101
bb q122 10 0 10 48
bb q222 0 0 0 48
bb q322 0 10 -10 50
做
def f(x):
d = {'con': [x['pwr1'].sum()],
'retro': [x['pwr2'].sum()],
'final': [x['pwr1'].sum() - x['pwr2'].sum()],
're_space': [x['pwr2'].count() - x['pwr1'].count()]} # <<< HERE
return pd.DataFrame(d)
out = df.groupby(['id', 'date', 'positions']) \
.apply(f).reset_index().drop(columns='level_3')
# Compute re_space with cumsum
out['re_space'] = out['positions'].astype(float) + out.groupby('id')['re_space'].cumsum()
这可以正常工作,但它仍然在计算值,并从re_空间中进行减法或加法,尽管值为0或null
如有任何建议,我们将不胜感激。 我还在排除故障
尝试
(x['pwr2'] !=0).values.sum()
而不是x['pwr2'].count()
更正代码:
产出:
相关问题 更多 >
编程相关推荐