Python 如何在检查列表中的拆分文本成员资格后从dataframe中删除行?

Python 如何在检查列表中的拆分文本成员资格后从dataframe中删除行?,python,python-3.x,pandas,Python,Python 3.x,Pandas,这是我拥有的数据帧的头部: london.head() Location Borough Post town 0 Abbey Wood Bexley, Greenwich LONDON 1 Acton Ealing, Hammersmith and Fulham LONDON 2 Addington Croydon CROYD

这是我拥有的数据帧的头部:

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
这是从维基百科上摘取的伦敦地区列表:

行政区以逗号分隔,有些地点位于两个行政区内

我有一个东伦敦的行政区列表,我想用它来过滤数据帧

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)
我收到的错误是

在axis中找不到[0]


我做错了什么?有没有更合适的方法来写这篇文章?

的想法是将数值按集合进行比较,最后用于反转掩模使用
~

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
也许这会有帮助

london = london[london['Borough'].str.contains('|'.join(east_lon))]

使用
isin
any

m=pd.DataFrame(df['Borough'].str.split(', ').tolist(),index=df.index).isin(east_lon).any(axis=1)

df=df[m].copy()

在这里,我建议在解决方案正常工作时添加一些注释-测试值不按
拆分,而是按所有值拆分。因此,如果
east_lon=['aaa','bbb']
它也会为列-
london['Borough']=['aaa ddd,sss','bbb']
中的此样本数据返回
True
,但只返回
aaa
。取决于OP是否需要按
拆分的测试值。True。我只是假设自治区是唯一的,没有公共子字符串。谢谢你提到.golfed
df.Borough.str.split(',').map({*east_lon}.isdisjoint)
我喜欢使用
isdisjoint
非常聪明。很棒的东西。他很有魅力