我有一列工作,成本,实际和目标
work cost actual target
0 A 2 14 56.0
1 B 2 21 67.0
2 B 3 32 67.0
3 B 4 32 NaN
4 A 3 56 56.0
5 A 4 82 NaN
如果我的实际值〉目标值,这意味着它达到了目标,然后在新列'cost_met'中打印成本,成本行实际〉=目标,如果实际值小于目标值,这意味着它没有达到,然后打印最后一个值的成本,但在B中,我们有32作为两行的实际值,在这种情况下,使用pandas取第一个成本3,注意:我的目标为空,否则为单个唯一值注意:按列分组工作
预期输出:
work cost actual target cost_met
0 A 2 14 56.0 3
1 B 2 21 67.0 3
2 B 3 32 67.0 3
3 B 4 32 NaN 3
4 A 3 56 56.0 3
5 A 4 82 NaN 3
我申请了
grouped_df = df_final1.groupby('work')
df_final1['new_column']=grouped_df.apply(lambda x: x['cost'].where(x['actual']>x['target'])).reset_index(drop=True)
1条答案
按热度按时间k10s72fa1#
IIUC您可以使用
groupby.apply
和自定义函数:输出: