Pandas:如何确定列值是否在另一列的列表中

时间:2018-02-07 17:54:04

标签: python pandas

目标:我有这个数据框,我想查看“国家/地区”是否属于“另一个国家的邻居”列表:

Country     AnotherCountry  AnotherCountryNeighbors
A           X                [B, C]
A           Y                [A, B]

预期输出:如果国家/地区是邻居,我想添加一个“国家邻居”列,这是一个布尔值:

Country     AnotherCountry  AnotherCountryNeighbors   CountryNeighbor
A           X                [B, C]                    False
A           Y                [A, B]                    True

尝试:我尝试使用dataframe.isin()函数:

df.Country.isin(df.AnotherCountryNeighbors)

错误:

TypeError: unhashable type: 'list'

2 个答案:

答案 0 :(得分:2)

inapply

一起使用
df.apply(lambda x :  x['Country'] in x['AnotherCountryNeighbors'],1)
Out[1425]: 
0    False
1     True
dtype: bool

您的AnotherCountryNeighbors是列表,isin无法使用列表 values : iterable, Series, DataFrame or dictionary

答案 1 :(得分:1)

在这种情况下,我发现列表理解+ zip可读且有效,而不是pandas

df['CountryNeighbor'] = [i in j for i, j in zip(df.Country, df.AnotherCountryNeighbors)]