将不同列数的多个数据帧合并为一个大数据帧

时间:2012-11-26 20:23:18

标签: pandas

我有两个包含不同列数和行数的CSV文件。第一个CSV文件有M列和N行,第二个有H列和G行。有些列具有相同的名称。

我想将这两者合并到具有以下属性的数据框中:

  • N + G行
  • (M,H)列的联盟
  • 如果列A是第一个CSV文件的元素但不是第二个CSV文件的元素,则数据框应在A的前N个条目中包含与第一个CSV中相同的值,其余部分应包含相同的值(因为第二个CSV中没有A数据) )应该是NA。

以下是一个例子:

CSV1
City, Population,
Zagreb, 700000,
Rijeka, 142000

CSV2
City, Area,
Split, 200.00
Osijek, 171.00
Dubrovnik, 143.35

我想构建一个如下所示的数据框:

City      Population   Area
Zagreb    700000       NA
Rijeka    142000       NA
Split     NA           200.00
Osijek    NA           171.00
Dubrovnik NA           143.35

另外,如果我有两个CSV文件,我有两个数据框并且想要做同样的事情,例如,如果我先将{csv'加载到df1,然后加载df2中的第二个,然后想要制作一个合并到df3,如上图所示。

1 个答案:

答案 0 :(得分:4)

为什么不试试concat函数:

In [25]: df1
Out[25]: 
     City  Population
0  Zagreb      700000
1  Rijeka      142000

In [26]: df2
Out[26]: 
        City    Area
0      Split  200.00
1     Osijek  171.00
2  Dubrovnik  143.35

In [27]: pd.concat([df1,df2])
Out[27]: 
     Area       City  Population
0     NaN     Zagreb      700000
1     NaN     Rijeka      142000
0  200.00      Split         NaN
1  171.00     Osijek         NaN
2  143.35  Dubrovnik         NaN

In [28]: pd.concat([df1,df2], ignore_index=True)
Out[28]: 
     Area       City  Population
0     NaN     Zagreb      700000
1     NaN     Rijeka      142000
2  200.00      Split         NaN
3  171.00     Osijek         NaN
4  143.35  Dubrovnik         NaN

注意:如果您的要求略有不同,concat会有其他选项。