python - 过滤没有 isnull 的 NaN 值的 pandas 数据框
问题描述
我有一个清单A
:
A = [nan, 2, 3, 4, 6]
还有一个熊猫数据框df
:
index X Y
0 A NaN
1 B 2
2 C 6
3 D 4
4 E 3
我想创建一个列表理解来获取索引列表,其中列表中的每个值都等于 Y 列。通常我会这样做:
B = [df[df.Y == x].index[0] for x in A]
但是,这不适用于 A 的第一个元素 nan。显然,我可以使用普通的 for 循环并使用 isnull 来完成上述操作,如下所示,但是有没有办法通过列表理解来做到这一点?
B = []
for x in A:
if pd.isnull(x):
B.append(df[pd.isnull(df.Y)].index[0])
else:
B.append(df[df.Y == x])
预期结果:
B = [0,1,4,3,2]
解决方案
给你你想要的东西(基本上只是重新利用你现有的 if 语句),尝试:
B = [df[pd.isnull(df.Y)].index[0] if pd.isnull(x) else df[df.Y == x].index[0] for x in A]