我有一个看起来像这样的数据框
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列中的一个单元格。
是否有解决此问题的优雅方法?
答案 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