Concat无法识别要串联的列之间的共享索引

时间:2019-02-14 20:46:52

标签: python pandas concat

我正在尝试用数据df1b(2214,4)和df2b(2262,4)合并2个csv文件。这两个文件中的大部分索引是相同的,因此我正在寻找那些重叠的行,并且在索引唯一的情况下,其他行将由NaN填充。下面的示例:

df1b

Index Col1,  2,  3     
A .      Data in all columns     
B .      Data in all columns      
D .      Data in all columns      
E .      Data in all columns

df2b

索引,ColX,Y,Z

A .      Data in all columns     
B .      Data in all columns      
C .      Data in all columns      
E .      Data in all columns

所需的最终结果:

索引,Col1、2、3,x,y,z,

A . Data in all columns

B . Data in all columns

C . NaN, NaN, NaN, Data, data, data 

D . Data in all columns

E . Data in all columns

当我使用以下方法进行合并时:df3 = pd.concat([df1b, df2b], axis=1)结果是一个尺寸为(4800,4)的文件,其中concat无法识别出这两个文件之间的索引实际上是相同的。有没有人遇到为什么会发生这种情况?

df = pd.read_csv('XX.csv')

df1 = df[['Gene', 'Young_Q1', 'Young_Q2', 'Young_Q3']]

df1a = df1.to_csv('Young_Q.csv', index=False)

df1b = pd.read_csv('Young_Q.csv', index_col='Gene', encoding='utf-8')

df2 = df[['OldQ_Gene', 'Old_Q1', 'Old_Q2', 'Old_Q3']]

df2a = df2.to_csv('Old_Q.csv', index=False)

df2b = pd.read_csv('Old_Q.csv', index_col='OldQ_Gene', encoding='utf-8')


df3 = pd.concat([df1b, df2b], axis=1)

结果示例如下:

Df3

A .  NaN, NaN, NaN,  Data, Data, Data

B .  NaN, NaN, NaN,  Data, Data, Data 

D .  NaN, NaN, NaN,  Data, Data, Data 

E .  NaN, NaN, NaN,  Data, Data, Data 

A .  Data, Data, Data, NaN, NaN, NaN 

B .  Data, Data, Data, NaN, NaN, NaN  

C .  Data, Data, Data, NaN, NaN, NaN  

E .  Data, Data, Data, NaN, NaN, NaN

1 个答案:

答案 0 :(得分:1)

您可以使用合并:

df3 = df1b.merge(df2b, on='Gene', how='outer)

您只需要将Gene视为普通列

更多信息在这里: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html