如何整理(融化)Pandas中的数据并保留所有其他列?

2024-03-29 04:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一下这个Pandas数据帧:

df = pd.DataFrame({
    'User ID': [1, 2, 2, 3],
    'Cupcakes': [1, 5, 4, 2],
    'Biscuits': [2, 5, 3, 3],
    'Score': [0.65, 0.12, 0.15, 0.9]
})

也就是说

^{2}$

我想把这些数据,这样甜点类型是分开的。但我也希望为每个用户保留分数。在

直接使用^{}不起作用:

df.melt(
    id_vars=['User ID'],
    value_vars=['Cupcakes', 'Biscuits'],
    var_name='Dessert', value_name='Enjoyment'
)

…给予:

   User ID   Dessert  Enjoyment
0        1  Cupcakes          1
1        2  Cupcakes          5
2        2  Cupcakes          4
3        3  Cupcakes          2
4        1  Biscuits          2
5        2  Biscuits          5
6        2  Biscuits          3
7        3  Biscuits          3

我把分数数据弄丢了!在

我不能使用^{},因为我没有一个共同的“存根名称”来表示我的甜点类型。在

我不能将整理后的数据与原始数据合并或合并,因为整理后的数据被重新编制索引,并且用户ID对于每个观察结果都不是唯一的。在

如何整理这些数据,但保留不涉及整理的列?在


Tags: 数据用户nameid类型dfvaluevars
1条回答
网友
1楼 · 发布于 2024-03-29 04:44:33

将列Score添加到^{}中的id_vars

id_vars : tuple, list, or ndarray, optional

Column(s) to use as identifier variables.

df1 = df.melt(
    id_vars=['User ID', 'Score'],
    value_vars=['Cupcakes', 'Biscuits'],
    var_name='Dessert', value_name='Enjoyment'
)
print (df1)
   User ID  Score   Dessert  Enjoyment
0        1   0.65  Cupcakes          1
1        2   0.12  Cupcakes          5
2        2   0.15  Cupcakes          4
3        3   0.90  Cupcakes          2
4        1   0.65  Biscuits          2
5        2   0.12  Biscuits          5
6        2   0.15  Biscuits          3
7        3   0.90  Biscuits          3

如果需要熔化没有User IDScore的所有柱体,省略value_vars

^{pr2}$

相关问题 更多 >