Pandas使用列标题作为值将多个列转换/合并为单个列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas使用列标题作为值将多个列转换/合并为单个列相关的知识,希望对你有一定的参考价值。

我希望将三列组合成一个数据框中的单个列,使用列标题作为新列的值。所有三列都具有唯一值'1',其他两列只有NaN。

本来我想使用pivot,但我怀疑合并操作会更容易?我只是不确定如何去做。

我需要转

index     A       B        C        time      id
    0     1       NaN      NaN      4.42      1
    1     1       NaN      NaN      4.48      3
    2     1       NaN      NaN      5.45      2
    3     NaN     1        NaN      6.64      2
    4     NaN     1        NaN      7.49      1
    5     NaN     1        NaN      7.72      3
    6     NaN     NaN      1        8.13      1
    7     NaN     NaN      1        8.65      2
    8     NaN     NaN      1        9.07      3

成...

index     type  time    id
    0     A     4.42    1
    1     A     4.48    3
    2     A     5.45    2
    3     B     6.64    2
    4     B     7.49    1
    5     B     7.72    3
    6     C     8.13    1
    7     C     8.65    2
    8     C     9.07    3
答案

使用:


df = (df.set_index(['time','id'])
       .stack()
       .reorder_levels([2,0,1])
       .reset_index(name='a')
       .drop('a', 1)
       .rename(columns={'level_0':'type'}))
print (df)
  type  time  id
0    A  4.42   1
1    A  4.48   3
2    A  5.45   2
3    B  6.64   2
4    B  7.49   1
5    B  7.72   3
6    C  8.13   1
7    C  8.65   2
8    C  9.07   3

以上是关于Pandas使用列标题作为值将多个列转换/合并为单个列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Pandas 将多个 csv 文件中的单个数据列合并为一个?

如何解压缩数据框列中存在的 json 的键,值将转换为键作为列,而使用 python 将其值转换为列?

将具有相同列/索引的两个 pandas DataFrame 合并为一个 DataFrame

在 Pandas 中合并多个数据列

Pandas 将多个数据帧与存储在多个列上的查找值合并

pandas DataFrame:规范化一个 JSON 列并与其他列合并