【问题标题】:Python Pandas Melt a Sparse Data FramePython Pandas 融化了一个稀疏的数据框
【发布时间】:2019-03-14 20:00:42
【问题描述】:

我有一个看起来像这样的数据框

   a    b        z
1 NULL NULL  ... 1
2 NULL  1    ... NULL
3  1   NULL  ... NULL

第一列总是被填充,它的右边还有很多其他的。在 a 到 z 列中,有一个已填充,其余的则未填充。

我想将此数据框转换为双列数据框,其中列 a 到 z 列的标题位于第二列中。上面的例子会变成这个。

  The_Column
1    z
2    b
3    a

pandas.melt() 函数接近我的需要,但它不处理 NULL 值。我只关心 B 到 Z 列中填充的一个单元格。

有没有优雅的方法来处理这个问题?

【问题讨论】:

标签: python pandas transform melt


【解决方案1】:

你需要融化,然后是 df.dropna() - 就是这样

这应该可行:

df.set_index('a').melt().dropna().reset_index()

【讨论】:

  • 对不起,我的意思是 dropna(),而不是 drop_duplicates()
【解决方案2】:

使用stack(默认情况下会删除 NA):

x = (df.set_index('a')
         .stack()
         .reset_index()
         .drop(columns=0)
         .rename(columns={'level_1': 'The_Column'})

print(x)

输出:

   a The_Column
0  1          z
1  2          b
2  3          c

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 2022-01-17
    • 2016-08-03
    • 1970-01-01
    • 2022-12-17
    • 2020-07-17
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多