微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在数据框系列上的几个运算符后fillna没有效果?

如何解决为什么在数据框系列上的几个运算符后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 举报,一经查实,本站将立刻删除。