如何在Python中将相同名称的列和具有相同值的列分为两部分?

时间:2019-02-04 23:04:55

标签: python pandas data-analysis data-manipulation

我正在尝试拆分(内部拆分)一列,以便在同一列名下有两列,并且这两列都应具有相同的值。

我正在尝试使用Pandas库在Python中实现以下内容

说我的数据框看起来像这样

        Column1  Column2
Row1       1        2
Row2       3        4 

所需的输出:

         Column1  Column2
 Row1     1 | 1    2 | 2
 Row2     3 | 3    4 | 4 

1 个答案:

答案 0 :(得分:0)

如果我们从您的示例开始:

df = pd.DataFrame({'Column1': [1, 3],
                   'Column2': [2,4]},
                  index = ['Row1', 'Row2'])

df

      Column1   Column2
Row1        1         2
Row2        3         4
  1. 使用pd.concat和interleave方法对每列进行重复,并确保每列的重复出现在其右侧:
from toolz import interleave
df = pd.concat([df, df], axis=1)[list(interleave([df]))]

此时,数据框如下所示:

df

     Column1 Column1 Column2 Column2
Row1       1       1       2       2
Row2       3       3       4       4
  1. 现在将数据框的列更改为MultiIndex:
df.columns = pd.MultiIndex(levels=[['Column1', 'Column2'], ['A', 'B']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

这将导致一个数据框现在看起来像这样:

df

        Column1   Column2
        A   B     A   B
Row1    1   1     2   2
Row2    3   3     4   4