按组pandas将行转置为单列[duplicate]

wfypjpf4  于 2023-05-12  发布在  其他
关注(0)|答案(3)|浏览(110)

此问题已在此处有答案

How do I melt a pandas dataframe?(3个答案)
3小时前关闭
谁能帮我完成这个转变。我有一个数据集:
| ID| a1| a2| A3|
| --------------|--------------|--------------|--------------|
| a| 1|五|三|
| a|二|三|三|
| B|二|三|五|
| B|三|五|六|
| c|五|1|三|
| c|二|四个|二|
我想要这样的:
| ID|等级|
| --------------|--------------|
| a| 1|
| a|五|
| a|三|
| a|二|
| a|三|
| a|三|
| B|二|
| B|三|
| B|五|
| B|三|
| B|五|
| B|六|
.....等等谢谢!

gt0wga4j

gt0wga4j1#

使用“融化”功能:

df_melted = pd.melt(df, id_vars=['ID'], value_vars=['a1', 'a2', 'a3'], var_name='Levels', value_name='Values')
wd2eg0qa

wd2eg0qa2#

可能的解决方案:

df.set_index('ID').stack().droplevel(1).reset_index(name='Levels')

输出:

ID  Levels
0   a       1
1   a       5
2   a       3
3   a       2
4   a       3
5   a       3
6   b       2
7   b       3
8   b       5
9   b       3
10  b       5
11  b       6
12  c       5
13  c       1
14  c       3
15  c       2
16  c       4
17  c       2
hk8txs48

hk8txs483#

可以使用pd.MultiIndex

names = ["ID", "Levels"]
data = <your data>

index = pd.MultiIndex.from_product([range(i) for i in data.shape], names=names)

df = pd.DataFrame(data, index=index)

相关问题