如果行中的某些列在预定义的列表中,则从数据框架中提取信息



我有一个这样的列表:

list1 = ['4361', '1856', '57586', '79017', '972', '974', '1829', '10787', '85477', '57019', '7431', '53616', '26228', '29085', '5217', '5527']

然后我有两列数据帧,像这样:

print(df['col A'][0:10])
0      6416
1     84665
2        90
3      2624
4      6118
5       375
6       377
7       377
9       351
10      333

print(df['col B'][0:10])
0      2318
1        88
2      2339
3      5371
4      6774
5     23163
6     23647
7     27236
9     10513
10     1600

我想说'如果列表中的项位于数据帧的col A或col B中,则仅返回数据帧中的行'。

我可以想象如何迭代地做到这一点,就像这样:

for each_item in list1:
for i,row in df.iterrows():
if each_item in row['col A']:
print(row)
if each_item in row['col B']:
print (row)

我只是想知道是否有一种更简洁的方法来做到这一点,我不需要不断地循环遍历数据框,因为列表和数据框都相当大。

我在网上看到了这个代码片段,它将返回df['col A']等于一个值或df['col B']等于一个值的行:

print(df[(df["col A"]==1) | (df_train["col A"]==2)]

我只是不确定如何将其转换为提取数据,如果它在列表中。有人能告诉我如何将这种想法合并到我的代码中,或者人们认为我的原始代码片段(使用.iterrows())是最好的方法吗?

使用isin:

print(df[(df['col A'].isin(list1)) | (df['col B'].isin(list1))])

相关内容

  • 没有找到相关文章

最新更新