这是我拥有的数据框的头部:
london.head()
Location Borough Post town
0 Abbey Wood Bexley, Greenwich LONDON
1 Acton Ealing, Hammersmith and Fulham LONDON
2 Addington Croydon CROYDON
3 Addiscombe Croydon CROYDON
4 Albany Park Bexley BEXLEY, SIDCUP
从维基百科抓取的伦敦地区列表:
https://en.wikipedia.org/wiki/List_of_areas_of_London
自治市镇以逗号分隔,有些地点位于两个自治市镇。
我有一个东伦敦的行政区清单,我想以此为依据过滤数据框。
east_lon = ['Tower Hamlets', 'Newham', 'Waltham Forest', 'Barking and Dagenham', 'Redbridge', 'Havering', 'Hackney']
我尝试使用此嵌套的for循环来执行此操作,该循环检查列表中单个自治市镇或拆分后的一个自治市镇的成员资格。
for index, row in london.iterrows():
for borough in row['Borough'].split():
if borough or (borough + ',') not in east_lon:
london.drop(index, inplace=True)
我收到以下错误
在轴'中找不到[0]
我做错了什么?有没有更合适的方式写这个?
最佳答案
想法是使用isdisjoint
按组比较值,最后使用~
进行反转掩码:
east_lon = ['Bexley', 'Ealing', 'Waltham Forest']
s = set(east_lon)
mask = df['Borough'].apply(lambda x: set(x.split(', ')).isdisjoint(s))
df = df[~mask]
print (df)
Location Borough Post town
0 Abbey Wood Bexley, Greenwich LONDON
1 Acton Ealing, Hammersmith and Fulham LONDON
4 Albany Park Bexley BEXLEY, SIDCUP
关于python - 检查列表中的拆分文本成员身份后,如何从数据框中删除行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57347532/