我如何使用 .isin 进行子集化(好像它不能正常工作)?
How do I subset with .isin (seems like it doesn't work properly)?
我是莫斯科国立大学的学生,我正在做一个关于郊区铁路的小研究。我从维基百科上爬取了有关莫斯科地区所有车站的信息,现在我需要对这些车站进行子集化,即莫斯科中心直径 1(铁路线)车站。我有一个 Diameter 1 站列表 (d1_names),我想做的是使用 isin pandas 方法从整个数据帧 (suburban_rail) 中提取子集。问题是它 returns 只有 2 个站(第一个和最后一个),虽然我很确定还有更多,因为使用 str.contains 没有站 returns 我什么正在寻找(所以他们在数据框中)。我已经检查过拼写并尝试将 strip() 应用于数据框和站点列表的每个元素。附上我的代码的几张截图。
suburban_rail dataframe
stations' list I use to subset
what isin returns
checking manually for Bakovka station
checking manually for Nemchinovka station
提前致谢!
下次提供一个最小的可复制示例,例如下面的示例:
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
我是莫斯科国立大学的学生,我正在做一个关于郊区铁路的小研究。我从维基百科上爬取了有关莫斯科地区所有车站的信息,现在我需要对这些车站进行子集化,即莫斯科中心直径 1(铁路线)车站。我有一个 Diameter 1 站列表 (d1_names),我想做的是使用 isin pandas 方法从整个数据帧 (suburban_rail) 中提取子集。问题是它 returns 只有 2 个站(第一个和最后一个),虽然我很确定还有更多,因为使用 str.contains 没有站 returns 我什么正在寻找(所以他们在数据框中)。我已经检查过拼写并尝试将 strip() 应用于数据框和站点列表的每个元素。附上我的代码的几张截图。
suburban_rail dataframe
stations' list I use to subset
what isin returns
checking manually for Bakovka station
checking manually for Nemchinovka station
提前致谢!
下次提供一个最小的可复制示例,例如下面的示例:
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