如何解决为什么在数据框系列上的几个运算符后fillna没有效果?
看这一步的输出:
print(df[(df.Event == 'A') & (df.Direction == 'UP')].groupby('group').cumcount().add(1))
# Output:
0 1
2 1
3 2
dtype: int64
您看到nan
要填写的值吗?在这里添加.fillna(0)
会做任何事情吗?
一个可以工作的班轮:
df['prev'] = df.assign(prev = df[(df.Event == 'A') & (df.Direction == 'UP')].groupby('group').cumcount().add(1))['prev'].fillna(0)
解决方法
我有看起来像这样的数据框:
df = pd.DataFrame({'Event': ['A','B','A','C','C'],'Direction': ['UP','DOWN','UP','UP'],'group':[1,2,3,4,5,5]})
一切正常,当我这样做时:
df['prev'] = df[(df.Event == 'A') & (df.Direction == 'UP')].groupby('group').cumcount().add(1)
df['prev'].fillna(0,inplace=True)
但是,如果我在一行中执行此操作,则 fillna() 函数将不起作用:
df['prev'] = df[(df.Event == 'A') & (df.Direction == 'UP')].groupby('group').cumcount().add(1).fillna(0)
我的问题是:为什么会这样?有没有办法在一条线上做到这一点?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。