为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas - 列标题到行值

Pandas - 列标题到行值

互换的青春 2021-07-09 14:06:40
我正在尝试对 Pandas DataFrame 进行以下转换:源数据帧:    Food    Type       Eaten 2018-01    Eaten 2018-02   Eaten 2018-030   Apple   Fruit      3                4               01   Pizza   Fast Food  2                1               32   Cake    Desert     3                6               7目标数据帧:        Food    Type        Month      Eaten0       Apple   Fruit       2018-01    31       Apple   Fruit       2018-02    42       Apple   Fruit       2018-03    03       Pizza   Fast Food   2018-01    24       Pizza   Fast Food   2018-02    15       Pizza   Fast Food   2018-03    36       Cake    Desert      2018-01    37       Cake    Desert      2018-02    68       Cake    Desert      2018-03    7目标 DataFrame 的顺序并不重要。日期标题本质上被扩展为多行,我们每月获得一个条目而不是每月一列
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

这是一个典型的wide_to_long问题


pd.wide_to_long(df,'Eaten ',i=['Food','Type'],j='Month').reset_index()

Out[38]: 

    Food       Type    Month  Eaten 

0  Apple      Fruit  2018-01       3

1  Apple      Fruit  2018-02       4

2  Apple      Fruit  2018-03       0

3  Pizza  Fast Food  2018-01       2

4  Pizza  Fast Food  2018-02       1

5  Pizza  Fast Food  2018-03       3

6   Cake     Desert  2018-01       3

7   Cake     Desert  2018-02       6

8   Cake     Desert  2018-03       7


查看完整回答
反对 回复 2021-07-13
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

相信melt函数也满足这一点。Pandas doc 说 wide_to_long 对用户更友好,但melt 函数允许更大的灵活性。用熔体:

df.melt(id_vars=['Food','Type'],var_name = 'Month', value_name = 'Eaten')

id_vars 值表示您希望保留哪些列。其余列将向下旋转。


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信