简单地将数据放在另一个pandas python之上

时间:2017-05-24 18:43:00

标签: python pandas

我有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

我想要的只是在dfb之上的dfa堆栈不基于任何列或任何索引。我查看了这个页面: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

3 个答案:

答案 0 :(得分: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

更新:合并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)

答案 1 :(得分: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

答案 2 :(得分:0)

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