我有一个看起来像这样的数据框
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列中的一个单元格。
有一种优雅的方式来处理这个问题吗?
你需要融化,然后df.dropna() - 就是这样
这应该工作:
df.set_index('a').melt().dropna().reset_index()
使用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