2017-05-24 98 views
2

頂部我有2個樣本數據集DFA和DFB:簡單地把數據上的另一個大熊貓蟒蛇

import pandas as pd 


a = { 
'unit': ['A', 'B', 'C', 'D'], 
'count': [ 1, 12, 34, 52] 
} 

b = { 
'department': ['E', 'F'], 
'count': [ 6, 12] 
} 
dfa = pd.DataFrame(a) 
dfb = pd.DataFrame(b) 

他們的樣子:

dfa 
count unit 
    1 A 
    12 B 
    34 C 
    52 D 


dfb 
count department 
6   E 
12   F 

我要的是簡單的有DFA堆棧的頂部dfb不基於任何列或任何索引。我已檢查此頁面:https://pandas.pydata.org/pandas-docs/stable/merging.html,但找不到適合我的目的的頁面。

我期望的輸出是創建一個DFC看起來像下面的數據集,我想保持標題:

dfc: 

count  unit 
    1  A 
    12  B 
    34  C 
    52  D 
count department 
    6   E 
12   F 

回答

2

選項1
可以使用從頭構建它np.vstack

pd.DataFrame(
    np.vstack([dfa.values, dfb.columns, dfb.values]), 
    columns=dfa.columns 
) 

    count  unit 
0  1   A 
1  12   B 
2  34   C 
3  52   D 
4 count department 
5  6   E 
6  12   F 

選項2
可以導出爲CSV和讀回

from io import StringIO 
import pandas as pd 

pd.read_csv(StringIO(
     '\n'.join([d.to_csv(index=None) for d in [dfa, dfb]]) 
    )) 

    count  unit 
0  1   A 
1  12   B 
2  34   C 
3  52   D 
4 count department 
5  6   E 
6  12   F 
+0

我最喜歡option1,因爲我可以在該行中放置2個以上的數據集。你的選項2也不錯,但是選項1對我來說更直接 – Jessica

3
In [37]: pd.concat([dfa, pd.DataFrame(dfb.T.reset_index().T.values, columns=dfa.columns)], 
        ignore_index=True) 
Out[37]: 
    count  unit 
0  1   A 
1  12   B 
2  34   C 
3  52   D 
4 count department 
5  6   E 
6  12   F 

In [39]: dfa.append(pd.DataFrame(dfb.T.reset_index().T.values, columns=dfa.columns)) \ 
      .reset_index(drop=True) 
Out[39]: 
    count  unit 
0  1   A 
1  12   B 
2  34   C 
3  52   D 
4 count department 
5  6   E 
6  12   F 

UPDATE:合併3級的DF :

pd.concat([dfa, 
      pd.DataFrame(dfb.T.reset_index().T.values, columns=dfa.columns), 
      pd.DataFrame(dfc.T.reset_index().T.values, columns=dfa.columns)], 
      ignore_index=True) 
+0

如果有超過2個數據集,如何將它們全部放在一行中? – Jessica

0
dfa.loc[len(dfa),:] = dfb.columns 
dfb.columns = dfa.columns 
dfa.append(dfb)