2017-03-01 109 views
3

我试图将三个布尔数据框合并成一个,在至少一个其他数据框中显示True。有没有更好的方法来做到这一点比我下面有什么?合并布尔熊猫数据帧的Cannonical方法

# sample data 
df_1 = pd.DataFrame({'gene': ['one','two','three'], 
         'A': [1, 0, 0], 
         'B': [1, 0, 0], 
         'C': [1, 0, 0]}) 
df_1.set_index('gene', inplace = True) 

df_2 = pd.DataFrame({'gene': ['one','two','three'], 
         'A': [0, 1, 0], 
         'B': [0, 1, 0], 
         'C': [0, 1, 0]}) 
df_2.set_index('gene', inplace = True) 

df_3 = pd.DataFrame({'gene': ['one','two','three'], 
         'A': [0, 0, 1], 
         'B': [0, 0, 1], 
         'C': [0, 0, 1]}) 
df_3.set_index('gene', inplace = True) 

# combine dataframes 
combined = ((df_1 > 0) | (df_2 > 0) | (df_3 > 0)) 

是否有一种更加规范的方式来结合数据框?

回答

2

的简化版本:

df_1 | df_2 | df_3 

另一个版本:(不处理性能在这里,只是变化)

sum([df_1, df_2, df_3]) 
+1

总和([df_1,df_2,df_3])> 0也更有信心... –

+1

不,我会做.astype(布尔) – Boud