我正在尝试用数据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
答案 0 :(得分:1)
您可以使用合并:
df3 = df1b.merge(df2b, on='Gene', how='outer)
您只需要将Gene
视为普通列
更多信息在这里: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html