如何解决Pandas 将 NaN 或空白值替换为匹配行的先前值
我的数据如下:
Name Group
Jess 1
Jess
John 2
John 2
Jeff 2
Jeff
Fred 3
Fred 3
Fred
Henry 2
Henry 2
我正在尝试查找该人有一个空白组的所有行,然后将该空白值替换为已在该个人的表中找到的值。
我的计划是找出所有的空白值。
df[(pd.isna(df['Group']))]
然后编写 for 循环以在整个数据帧中搜索该人的值,然后用该值替换空白值。
for name in df_blank['Name'].unique():
df2 = df[(pd.notna(df['Group']) & df['Name']==name)]['Group'].unique()
df_blank['Group'] == df2['Group'].value
但是我确信这不是最有效的方法。有没有人可以帮忙提供一种更有效的方法?
谢谢!
解决方法
使用仅适用于 groupby().transform('first')
值的 NaN
:
df['Group'] = df.groupby('Name')['Group'].transform('first')
要同时处理 NaN
和空白字符串,我们可以在转换前替换:
df['Group'] = (df['Group'].replace('',np.NaN)
.groupby(df['Name'])
.tranform('first')
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。