gpt4 book ai didi

python - 根据特定条件减去和添加值,考虑基线值

转载 作者:行者123 更新时间:2023-12-04 07:21:53 27 4
gpt4 key购买 nike

我有一个数据框,我想根据分组 ID、计数和总和进行转换。

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_space 中减去或添加,尽管值为 0 或空值。
任何建议表示赞赏。
我仍在故障排除

最佳答案

试试 (x['pwr2'] !=0).values.sum()而不是 x['pwr2'].count()更正的代码:

def f(x):
d = {'con': [x['pwr1'].sum()],
'retro': [x['pwr2'].sum()],
'final': [x['pwr1'].sum() - x['pwr2'].sum()],
're_space': [(x['pwr2'] !=0).values.sum() - (x['pwr1']!=0).values.sum()]} # <<< HERE
return pd.DataFrame(d)
输出:
  pod date1  position  con  retro  final  re_space
0 aa q122 100 2 6 -4 101.0
1 bb q122 50 10 0 10 48.0
2 bb q222 50 0 0 0 48.0
3 bb q322 50 0 10 -10 50.0

关于python - 根据特定条件减去和添加值,考虑基线值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68448206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com