我有一个如下所示的数据框:
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().transform
与first
一起使用:
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/