Python 为不带isnull的NaN值筛选数据帧
我有一份清单a: 以及数据帧df: 我想创建一个列表,以获得索引列表,其中列表中的每个值等于Y列。通常我会这样做:Python 为不带isnull的NaN值筛选数据帧,python,pandas,Python,Pandas,我有一份清单a: 以及数据帧df: 我想创建一个列表,以获得索引列表,其中列表中的每个值等于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.
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.isnulldf.Y]。如果pd.isnullx是df[df.Y==x],则索引[0]。A中x的索引[0]能否显示输出的外观?
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]
A = [np.nan, 2, 3, 4, 6]
pd.DataFrame({'Y':A}).merge(df,how='left')
Out[394]:
Y index X
0 NaN 0 A
1 2.0 1 B
2 3.0 4 E
3 4.0 3 D
4 6.0 2 C