python - Python Pandas Groupby NaN 在列中应该具有相同的值
问题描述
以下是一个数据框:
A B C
ABC [0,3] NaN
ABC NaN No
XYZ NaN Yes
ABC [2] [str,'str']
XYZ [4,6] NaN
PQR NaN NaN
PQR [] NaN
123 1 ["str2"]
PQR NaN NaN
现在我想用同一组中的值替换 NaN 值,即 B2 显示中的 ABC 'NaN' 替换为 [0,3] 或 [2]。那么 C5 中的 XYZ 'NaN' 值应该是 'Yes',因为其他 XYZ C3 是 'Yes'。因此,不应有任何 NaN 值剩余所有 NaN 替换为由同一 groupby() 成员在同一列中存在的值,其中 groupby([CoulmnA])。
解决方案
此行可能有效:
df.groupby('A')['B'].apply(lambda g: g.ffill().bfill())
更新说明:它按 A 的值对 B 列进行分组,然后用在组中找到的非空值向前和向后填充。如果您不关心要使用什么值来重新填充(如果您有 >1 个选项),这将起作用。
推荐阅读
- java - 我可以在 servlet 页面中插入引导程序吗?如果可能,那怎么办?
- java - 需要 SSLAdapterFactory 和 BaseWLSSLAdapter 的正确 jar
- go - 为什么映射中的键和值共享相同的内存地址?
- python - 是否可以“动态”修改实例属性?可能通过将字符串与变量名匹配?
- javascript - 如果嵌入没有 author.name 它会给我一个错误
- c# - 如何使用 .NET SDK for Azure Service Bus 从服务总线主题及其订阅中读取死信计数?
- android - 导入模块后找不到android自定义库中的样式父
- javascript - 尝试创建一个使输入加倍的按钮
- discord - discord bot可以加入频道但不能播放音乐
- r - 一个命令中的逐行正态性、偏度和峰度