我有一個這樣的清單:
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
我想說“如果串列中的專案位于資料框的 A 列或 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())是最好的方法?
uj5u.com熱心網友回復:
使用isin:
print(df[(df['col A'].isin(list1)) | (df['col B'].isin(list1))])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331155.html
