python - 为行组填充空值

标签 python pandas

我有一个如下所示的数据框:

id   key   value
1    foo   1
2    bar   NaN
3    foo   NaN
4    bar   3
5    bar   NaN
6    foo   1

每个对应的只有一个非空。例如,foo 要么是 1,要么是 NaN。 Bar 为 3 或 NaN。

我需要根据这些非空值为每个key填充value。期望的结果应该如下所示:

id   key   value
1    foo   1
2    bar   3
3    foo   1
4    bar   3
5    bar   3
6    foo   1

我知道如何使用 for 循环来做到这一点,但是这个数据帧有数百万行,循环遍历它会花费很长时间。 fillna() 我只用于简单的用途,我不确定它如何在这里应用,或者是否应该应用。

感谢任何帮助。

最佳答案

您可以将groupby().transformfirst一起使用:

df['value'] = df.groupby('key')['value'].transform('first')

输出:

   id  key  value
0   1  foo    1.0
1   2  bar    3.0
2   3  foo    1.0
3   4  bar    3.0
4   5  bar    3.0
5   6  foo    1.0

关于python - 为行组填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66446950/

相关文章:

python - Django:重定向到 DetailView,URL 中没有 pk

python - 执行合并连接列的外连接

python - 无法安装 Pandas!帮助! (pip 安装 Pandas )

python - Pandas 如何处理类型为 "object"的列与整数进行比较的情况?

python - 将单个值从一列复制到满足条件的另一列

用于从数据帧行创建类对象的python代码

Python BeautifulSoup 检查输出

python - Musixmatch api 响应返回 200 但返回带有 None 值的 json

python - Python(pip)未在kubernetes上安装ElasticSearch库

python - Python 中的自适应直方图均衡化