gpt4 book ai didi

python - 如果列为 NaN 并且另一行的列不是 NaN,如何删除 Dataframe 中的行

转载 作者:行者123 更新时间:2023-12-01 02:25:56 26 4
gpt4 key购买 nike

我在 python 中有一个 pandas 数据框,其中行由 p1 标识。 & p2 ,但是p2有时是NaN :

   p1 p2
0 a 1
1 a 2
2 a 3
3 b NaN
4 c 4
5 d NaN
6 d 5

上面的数据帧是使用

从具有许多重复项的较大数据帧返回的
df.drop_duplicates(subset=["p1","p2"], keep='last')

这在很大程度上有效,唯一的问题是 NaN5从技术上讲,它们不重复,因此不会被丢弃。

如何删除另一行具有相同 "d", NaN 的行(例如: p1 ) p2 not.null 的值例如。 "d", 5 。这里重要的是"b", NaN被保留,因为没有行包含 "b", not.null .

最佳答案

我们可以groupbyffillbfill,然后drop_duplicates

df.assign(p2=df.groupby('p1')['p2'].apply(lambda x : x.ffill().bfill())).\
drop_duplicates(subset=["p1","p2"], keep='last')
Out[645]:
p1 p2
0 a 1.0
1 a 2.0
2 a 3.0
3 b NaN
4 c 4.0
6 d 5.0

关于python - 如果列为 NaN 并且另一行的列不是 NaN,如何删除 Dataframe 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47405274/

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