如何查看pandas列中的字符串是否出现在列表中

时间:2017-11-26 17:07:06

标签: python-3.x pandas

我有一个名为Matches的Pandas DataFrame,其中包含一个名为MatchIDs的列。这包含一系列匹配ID,如下所示:

Man CityTottenham
BoltonMan City
Man CityWigan
NewcastleMan City
ChelseaMan City
Man CityWest Ham
Man UnitedMan City
Man CityFulham
Man CityBlackpool

我在追求的是:

在此Matches DataFrame的另一列中,对于每个ID,二进制输出为0或1,如果ID显示在完全独立的DataFrame中,则将其称为Rivals(不确定是否列出/词典会更好。)

一个例子: 因此,在单独的DataFrame Rivals中,会有:

Man CityTottenham
Man UnitedMan City
ChelseaMan City

对于原始DataFrame Matches,如果MatchID出现在Rivals中,则会获得1,如果不是,则为0。正确的输出是右栏:

Man CityTottenham     1
BoltonMan City        0
Man CityWigan         0
NewcastleMan City     0
ChelseaMan City       1
Man CityWest Ham      0
Man UnitedMan City    1
Man CityFulham        0
Man CityBlackpool     0 

所以Man UnitedMan City = 1,因为它出现在Rivals DataFrame中,而NewcastleMan City = 0。

我已经尝试并努力找到正确的方法,并且非常感谢任何帮助!

希望解释清楚得多!

1 个答案:

答案 0 :(得分:0)

使用isin作为MatchIDs的第df列的检查值,Rivals的{​​{1}},astypeint的最终投射布尔值掩码:

Matches['new'] = Matches['MatchIDs'].isin(Rivals['MatchIDs']).astype(int)

此外,如果值位于list

Matches['new'] = Matches['MatchIDs'].isin(L).astype(int)