python - 如果另一列中的值匹配,如何填充列中的 nan 值

标签 python python-3.x pandas dataframe

假设我有一个像这样的数据框:

      col1         col2     col3
0     data1         0        NaN
1     data1         0        NaN
2     data1         1        Done
3     data2         0        NaN
4     data2         1      To be done
5     data3         0        NaN
6     data3         1        Fail

如何替换 col3 中的 nan 值,例如:col1 中的 data1 在 col3 中具有“完成”行, 我如何将此值传递给 col3 中包含 col1 中的 data1 的所有 NaN 行?

理想的 df 看起来像这样:

      col1         col2      col3
0     data1         0        Done
1     data1         0        Done
2     data1         1        Done
3     data2         0      To be done
4     data2         1      To be done
5     data3         0        Fail
6     data3         1        Fail

最佳答案

使用groupby + bfill:

df['col3'] = df.groupby('col1')['col3'].bfill()
print(df)

# Output:
    col1  col2        col3
0  data1     0        Done
1  data1     0        Done
2  data1     1        Done
3  data2     0  To be done
4  data2     1  To be done
5  data3     0        Fail
6  data3     1        Fail

关于python - 如果另一列中的值匹配,如何填充列中的 nan 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70318257/

相关文章:

python - Tensorflow GPU - 导入错误 : Could not find 'nvcuda.dll'

python - 使函数返回 bool 值并在 tic/tac/toe 游戏中实现 AI

python - 如何检查重复的元音

string - Python Pandas : How to replace string contain "?"

python - 根据 ID 列的值创建新列

python - 由于非浮点 NaN 值,替换 DataFrame 中的 NaN 不起作用

python - 使用 Python 代码的径向分布函数

python - itertools 中的 izip_longest : what's going on here?

python - 按组计算 Pandas Dataframe 中列表的重复项计数

linux - 在 Linux 上构建可嵌入(最小)Python 发行版