如何重组我的Pandas DataFrame,使列名变为列值?
我现在有一个数据表,长得像这样:
电影 1 | 电影 2 |
---|---|
第一选择 | 第二选择 |
第二选择 | 第一选择 |
我想把它变成这样:
第一选择 | 第二选择 |
---|---|
电影 1 | 电影 2 |
电影 2 | 电影 1 |
我找不到办法来重新整理我的数据表,让它像这样交换列名和列值。
我试着遍历每一行,创建一个列表,把列名和它们的值和顺序对应起来,但似乎没有正确工作。
我也试过直接创建新的列,比如第一选择、第二选择等,来抓取列名并用它们作为列值,但总是出错。
1 个回答
1
在这里,我们讨论的是使用 melt
函数,设置 ignore_index=False
,以及使用 pivot
函数,但没有指定 index
的情况:
out = (df.melt(ignore_index=False)
.pivot(columns='value', values='variable')
.rename_axis(index=None, columns=None) # optional
)
还有一种更传统、更详细的替代方法:
out = (df.reset_index().melt('index')
.pivot(index='index', columns='value', values='variable')
.rename_axis(index=None, columns=None)
)
输出结果:
1st choice 2nd choice
0 Movie 1 Movie 2
1 Movie 2 Movie 1