R_a*_*efg 4 python tuples filter dataframe pandas
如何从一组元组中过滤数据帧,以便配对相同?我需要一种更优雅的写作方式。我尽量不使用合并,因为它会降低效率。
所以我有一个名为 tup_list 的元组列表:
[('118', '35'), ('35', '35'), ('118', '202')
假设每个元组中的第一个元素是 A,第二个是 B,我试图根据这个 tup_list 过滤我的数据帧,其中配对需要相同。
原始数据框:
A B
118 35
118 40
35 202
118 1
35 35
Run Code Online (Sandbox Code Playgroud)
根据tup_list过滤后,新的dataframe应该是:
A B
118 35
35 35
Run Code Online (Sandbox Code Playgroud)
只应返回精确的配对。
目前我正在使用 df= df.merge(tup_list, on=['A','B'], how='inner'). But is not very efficient as my actual data is larger.
请建议更有效的写作方式。
使用布尔索引:
tup_list = [(118, 35), (35, 35), (118, 202)]
df[pd.Series(list(zip(df['A'], df['B']))).isin(tup_list)]
A B
0 118 35
4 35 35
Run Code Online (Sandbox Code Playgroud)
list(zip(df['A'], df['B']))
把你的两列变成一个元组列表:
[(118, 35), (118, 40), (35, 202), (118, 1), (35, 35)]
Run Code Online (Sandbox Code Playgroud)
你正在变成一个系列并isin
用来返回一个布尔值:
0 True
1 False
2 False
3 False
4 True
dtype: bool
Run Code Online (Sandbox Code Playgroud)
可用于布尔索引
归档时间: |
|
查看次数: |
2343 次 |
最近记录: |