在Pandas Dataframe中将两个稀疏列连接在一起

时间:2017-02-27 19:03:59

标签: python pandas numpy

我有一个包含3列的数据框--ID,Match,Match2,我希望创建一个名为Matchfinal的第三列。我需要一个使用numpy的函数,它查看Match列并查看是否有True或False。如果为True,则在Matchfinal列中显示True。如果为false,则转到Match2列并查看是否存在True。如果Match 2为True,则它将在Matchfinal列中写入True。如果在Match和Match2列中都看到false,它将在Matchfinal列中写入False。

Example of  dataframe:
ID     Match    Match 2   Matchfinal  
123    True     False     True  
1234   False    True      True
145    False    False     False           
158    False    True      True

The code i am currently using just writes whatever I have in the column Match. 
df['Matchfinal']= df.Match.combine_first(df['Match2'])

3 个答案:

答案 0 :(得分:2)

尝试:

{{1}}

答案 1 :(得分:2)

以下是针对不同数量的Match*列的通用解决方案:

In [51]: x
Out[51]:
     ID  Match Match2 Match3 Match4
0   123   True  False   True   True
1  1234  False   True  False   True
2   145  False  False  False  False
3   158  False   True  False  False

In [52]: x['Matchfinal'] = x.filter(like='Match').any(1)

In [53]: x
Out[53]:
     ID  Match Match2 Match3 Match4 Matchfinal
0   123   True  False   True   True       True
1  1234  False   True  False   True       True
2   145  False  False  False  False      False
3   158  False   True  False  False       True

答案 2 :(得分:0)

df["MatchFinal"] = df.apply(lambda x: any(x), axis=1)

这将是我的首选方式。