首页 > 解决方案 > 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])。

标签: pythonpandasnumpydataframepandas-groupby

解决方案


此行可能有效:

df.groupby('A')['B'].apply(lambda g: g.ffill().bfill())

更新说明:它按 A 的值对 B 列进行分组,然后用在组中找到的非空值向前和向后填充。如果您不关心要使用什么值来重新填充(如果您有 >1 个选项),这将起作用。


推荐阅读