例如,我已经跟随pandas DataFrame:
import pandas as pd
df = pd.DataFrame(data=[[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c'])
print(df)
a b c
0 1 2 3
1 4 5 6
我想把它转换成以下格式:
field data
0 a 1
1 a 4
2 b 2
3 b 5
4 c 3
5 c 6
将原列名作为新列field
值,且数据为列的原数据,如何实现?
您可以stack
数据帧,然后执行一些索引删除/重置和列重命名:
df.stack().droplevel(0).reset_index().rename(columns={'index': 'field', 0:'data'})
field data
0 a 1
1 b 2
2 c 3
3 a 4
4 b 5
5 c 6
或者您可以使用melt
方法传递变量和值列名:
>>> df.melt(var_name='field', value_name='data')
field data
0 a 1
1 a 4
2 b 2
3 b 5
4 c 3
5 c 6
stack和melt的值顺序不同。