gpt4 book ai didi

python - 在同一数据框中用值填充 NaN 信息

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:37 24 4
gpt4 key购买 nike

我想知道有没有更快的方法可以不用for循环解决这个问题?

输入数据框如下所示:

    0    1    2    3    4    5    6   
0 x x 1 NaN NaN NaN NaN
1 x y 1 NaN NaN NaN NaN
2 y y 4 4 4 4 4
3 y z 5 2 7 4 0
4 x x NaN 5 7 4 9
5 x y NaN 9 4 5 10

我希望输出看起来像这样:

    0    1    2    3    4    5    6   
0 x x 1 5 7 4 9
1 x y 1 9 4 5 10
2 y y 4 4 4 4 4
3 y z 5 2 7 4 0

col0 & col1 是一些信息。如果我们将它们作为一个信息,则这两列不会有 NaN 并且是唯一的。

这个数据框可能非常大,我不知道数据丢失在哪里。

最佳答案

如果每组首先需要非 NaN 值,请使用 GroupBy.first :

df1 = df.groupby([0,1], as_index=False).first()
print (df1)
0 1 2 3 4 5 6
0 x x 1.0 5.0 7.0 4.0 9.0
1 x y 1.0 9.0 4.0 5.0 10.0
2 y y 4.0 4.0 4.0 4.0 4.0
3 y z 5.0 2.0 7.0 4.0 0.0

print (df)
0 1 2 3 4 5 6
0 x x 10.0 NaN NaN NaN NaN
1 x x 20.0 NaN NaN NaN NaN
2 x x 1.0 NaN NaN NaN NaN
3 x y 1.0 NaN NaN NaN NaN
4 y y 4.0 4.0 4.0 4.0 4.0
5 y z 5.0 2.0 7.0 4.0 0.0
6 x x NaN 5.0 7.0 4.0 9.0
7 x x NaN 50.0 70.0 4.0 9.0
8 x y NaN 9.0 4.0 5.0 10.0

如果每组没有 NaN 的更多行可能会丢失一些数据:

df1 = df.groupby([0,1], as_index=False).first()
print (df1)
0 1 2 3 4 5 6
0 x x 10.0 5.0 7.0 4.0 9.0
1 x y 1.0 9.0 4.0 5.0 10.0
2 y y 4.0 4.0 4.0 4.0 4.0
3 y z 5.0 2.0 7.0 4.0 0.0

自定义函数的可能解决方案:

def f(x):
df1 = pd.DataFrame({y: pd.Series(x[y].dropna().values) for y in x})
return (df1)

df = df.set_index([0,1]).groupby([0,1]).apply(f).reset_index(level=2, drop=True).reset_index()
print (df)
0 1 2 3 4 5 6
0 x x 10.0 5.0 7.0 4.0 9.0
1 x x 20.0 50.0 70.0 4.0 9.0
2 x x 1.0 NaN NaN NaN NaN
3 x y 1.0 9.0 4.0 5.0 10.0
4 y y 4.0 4.0 4.0 4.0 4.0
5 y z 5.0 2.0 7.0 4.0 0.0

关于python - 在同一数据框中用值填充 NaN 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com