Python熊猫融化了稀疏的数据框

时间:2019-03-14 20:00:43

标签: python pandas transform melt

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

   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列中的一个单元格。

是否有解决此问题的优雅方法?

2 个答案:

答案 0 :(得分:1)

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

这应该有效:

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

答案 1 :(得分: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