2012-11-26 52 views
1

我有兩個CSV文件,列數和行數不同。第一個CSV文件有M列和N行,第二個有H列和G行。某些列具有相同的名稱。將不同列數的多個數據幀合併到一個大數據幀中

我想在兩個具有以下性質組合成數據幀:

  • N + G行
  • 聯盟(M,H)列
  • 如果列A是第一的元件CSV文件,但不是第二個,數據框應該在第一個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,看起來像上面的例子。

回答

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確實有一些額外的選項,如果你有略微不同的要求。

+0

謝謝,這工作正常。 – enedene

+0

@enedene我有一個很大的沒有。列連接我不想寫每個這些的名稱我怎麼能做到這一點? – 2016-06-07 19:07:00

+0

@丹尼斯我不明白這個問題。請考慮提出一個單獨的問題(這樣更多的人可以看到它)。 –

相關問題