我有一个如下的数据帧:
Date 1-Jan 2-Jan 3-Jan 4-Jan
Duty
1 Bob NaN Bob NaN
2 NaN NaN Bob Bob
3 NaN NaN Bob Bob
我想要实现的是在每个日期添加最后一行,如果在任何Duty
中有Bob
,那么值将是“Bob”,如下所示:
Date 1-Jan 2-Jan 3-Jan 4-Jan
Duty
1 Bob NaN Bob NaN
2 NaN NaN Bob Bob
3 NaN NaN Bob Bob
sum Bob NaN Bob Bob
我尝试使用pd.apply
如下:
df.loc['sum'] = df.apply(lambda x: x.sum())
但我得到的结果是:
Date 1-Jan 2-Jan 3-Jan 4-Jan
Duty
1 Bob NaN Bob NaN
2 NaN NaN Bob Bob
3 NaN NaN Bob Bob
sum NaN NaN BobBobBob NaN
我还尝试将每一行分割成几个小的数据帧,并尝试pd.merge()
它们也不起作用。你知道吗
如果每列需要第一个非缺失值,请使用^{} 和
next
以及iter
作为可能的设置默认值(如果不存在第一个值):或者将^{} 与^{} 一起使用:
如果需要测试值
Bob
:首先,我们检查每列中的值的
any
是否等于(eq
)到Bob
。然后我们append
这些值在数据帧的底部,同时映射True > Bob
和False > NaN
:输出
相关问题 更多 >
编程相关推荐