python将列转为行_python – 将pandas列值转换为行

选项1

您应该可以使用set_index堆栈执行此操作:

df.set_index('Key').stack().reset_index(level=0, name='value').reset_index(drop=True)

Key value

0 a b

1 d e

2 f g

3 f h

4 q r

5 q s

6 q t

如果您不想继续重置索引,那么使用中间变量并创建一个新的DataFrame:

v = df.set_index('Key').stack()

pd.DataFrame({'Key' : v.index.get_level_values(0), 'value' : v.values})

Key value

0 a b

1 d e

2 f g

3 f h

4 q r

5 q s

6 q t

这里的本质是默认情况下堆栈自动摆脱NaN(你可以通过设置dropna = False来禁用它).

选项2

使用np.repeat和numpy的pd.DataFrame.stack版本获得更高的性能:

i = df.pop('Key').values

j = df.values.ravel()

pd.DataFrame({'Key' : v.repeat(df.count(axis=1)), 'value' : j[pd.notnull(j)]

})

Key value

0 a b

1 d e

2 f g

3 f h

4 q r

5 q s

6 q t

你可能感兴趣的:(python将列转为行)