在熊猫中,Concat两个数据透视表具有不同的列数

时间:2017-11-07 09:52:31

标签: python pandas pivot-table

我有两个具有不同列数的数据透视表,我需要创建一个表,其值在单元格中以逗号分隔,但在第一个表中没有出现的单元格中放入0。

例如

Table 1

       1      3    4
a     t1a1  t1a3 t1a4
b     t1b1  t1b3 t1b4

Table 2

       1    2    3    4
a     t2a1 t2a2 t2a3 t2a4
b     t2b1 t2b2 t2b3 t2b4

我想:

           1             2           3            4
a     (t1a1,t2a1)   (0,t2a2)  (t1a3,t2a3)   (t1a4,t2a4)
b     (t1b1,t2b1)   (0,t2b2)   (t1b3,t2b3)   (t1b4,t2b4)

功能

df = '(' + df1.astype(str) + ' , ' + df2.astype(str) + ')'
print (df)

返回

         1         2         3              4
a  (t1a1 , t2a1)  NaN  (t1a3 , t2a3)  (t1a4 , t2a4)
b  (t1b1 , t2b1)  NaN  (t1b3 , t2b3)  (t1b4 , t2b4)

我使用pandas库在Python中工作。

1 个答案:

答案 0 :(得分:1)

致电df.reindex,你就可以了!

'(' + df1.reindex(columns=df2.columns, fill_value='0') + ', ' + df2 + ')'

              1          2             3             4
a  (t1a1, t2a1)  (0, t2a2)  (t1a3, t2a3)  (t1a4, t2a4)
b  (t1b1, t2b1)  (0, t2b2)  (t1b3, t2b3)  (t1b4, t2b4)

请注意,您拥有的是字符串的列,而不是元组的列。有区别。