目标:我有这个数据框,我想查看“国家/地区”是否属于“另一个国家的邻居”列表:
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'
答案 0 :(得分:2)
将in
与apply
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)]