Python Pandas融化稀疏数据框架

问题描述 投票:0回答:2

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

   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
2个回答
1
投票

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

这应该工作:

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

0
投票

使用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
© www.soinside.com 2019 - 2024. All rights reserved.