首页 > 解决方案 > 如何使用 .isin 进行子集化(似乎无法正常工作)?

问题描述

我是莫斯科国立大学的学生,我正在做一项关于郊区铁路的小型研究。我从维基百科爬取了有关莫斯科地区所有车站的信息,现在我需要对这些车站进行子集化,即莫斯科中央直径 1(铁路线)车站。我有一个直径 1 站 (d1_names) 的列表,我想做的是使用 isin pandas 方法从整个数据帧 (suburban_rail) 中提取子集。问题是它只返回 2 个站点(第一个和最后一个),尽管我很确定还有更多,因为使用 str.contains 和不存在的站点会返回我正在寻找的内容(所以它们在数据框中) . 我已经检查了拼写并尝试将 strip() 应用于数据框和站点列表的每个元素。附上我的代码的几个屏幕截图。

郊区铁路数据框

我用来子集的电台列表

isin 返回什么

手动检查 Bakovka 站

手动检查 Nemchinovka 站

提前致谢!

标签: pythonpandasdataframesubsetisin

解决方案


下次提供一个最小的可重现示例,例如以下示例:

suburban_rail = pd.DataFrame({'station_name': ['a','b','c','d'], 'latitude': [1,2,3,4], 'longitude': [10,20,30,40]})
d1_names = pd.Series(['a','c','d'])

suburban_rail

    station_name    latitude    longitude
0   a               1           10
1   b               2           20
2   c               3           30
3   d               4           40

现在,回答你的问题:使用.loc问题解决了:

suburban_rail.loc[suburban_rail.station_name.isin(d1_names)]

    station_name    latitude    longitude
0   a               1           10
2   c               3           30
3   d               4           40

推荐阅读