首页 > 解决方案 > 从其他数据框中的值中选择行

问题描述

我对 python 非常陌生,并且使用 pandas 来对数据框进行子集化。

我有三个需要处理的表,第一个看起来像下面的那个

主表

ID 姓名
A0 约翰
A1 蒂姆
A2 詹姆士
A3

我的第二张桌子在下面| 编号 | 年份 | | ---- | ---- | | A0 | 2019 | | A1 | 2020 | | A1 | 2019 |

我的第三张桌子在下面| 姓名 | 年份 | | ---- | ---- | | 简 | 2020 |

使用第二个表中的 id 和第三个表中的名称,我想对与第二个和第三个表中的 id 和名称匹配的第一个表(主表)进行子集化,并提供仅从年份 == 2020 中选择的选项

所以输出可能如下所示: | 编号 | 姓名 | | -------- | -------------- | | A1 | 蒂姆 | | A3 | 简 |

我正在考虑通过使用 if 循环来解决这个问题,但无法弄清楚

谢谢

标签: pythonpandasdataframesubset

解决方案


如果需要 filter master byidnamefrom second dfuse boolean indexingwith Series.isinfor check members,条件由|for bitwise链接OR

master[master['id'].isin(df1['id']) | master['name'].isin(df2['name'])]

编辑:对于按 s 过滤行Year添加:

id1 = df1.loc[df1['Year'] == 2000, 'id']
name2 = df2.loc[df2['Year'] == 2000, 'name']
master[master['id'].isin(id1) | master['name'].isin(name2)]

推荐阅读