繁体   English   中英

Pandas df 长到宽并旋转?

[英]Pandas df long to wide and pivot?

我有一个像这样的熊猫 df:

在此处输入图片说明

这是输入数据:

[{'Region/Province': 'PHILIPPINES', 'Commodity': 'Atis [Sugarapple]', '2018 January': '..', '2018 February': '..'}, {'Region/Province': 'PHILIPPINES', 'Commodity': 'Avocado', '2018 January': '..', '2018 February': '..'}, {'Region/Province': 'PHILIPPINES', 'Commodity': 'Banana Bungulan, green', '2018 January': '12.57', '2018 February': '12.48'}, {'Region/Province': 'PHILIPPINES', 'Commodity': 'Banana Cavendish', '2018 January': '9.96', '2018 February': '8.8'}]

其中commodity后面的栏目是这样的:2018年1月,2018年2月.. 2018年一直到2021年。

但我需要这样:

在此处输入图片说明

Commodity名称重复的地方,但按年/月拆分, Amount是它自己的列。 我试过pd.wide_to_long()并且它接近我所需要的,但是岁月变成了它们自己的列。

任何帮助深表感谢

尝试使用str.split stack

stacked = (
    df.set_index(['Region/Province', 'Commodity'])
        .stack()
        .reset_index(name='Amount')
)
stacked[['Year', 'Month']] = stacked['level_2'].str.split(expand=True)
stacked = stacked.drop('level_2', axis=1)

stacked

  Region/Province               Commodity Amount  Year     Month
0     PHILIPPINES       Atis [Sugarapple]     ..  2018   January
1     PHILIPPINES       Atis [Sugarapple]     ..  2018  February
2     PHILIPPINES                 Avocado     ..  2018   January
3     PHILIPPINES                 Avocado     ..  2018  February
4     PHILIPPINES  Banana Bungulan, green  12.57  2018   January
5     PHILIPPINES  Banana Bungulan, green  12.48  2018  February
6     PHILIPPINES        Banana Cavendish   9.96  2018   January
7     PHILIPPINES        Banana Cavendish    8.8  2018  February

meltstr.split

melt = df.melt(['Region/Province', 'Commodity'], value_name='Amount')
melt[['Year', 'Month']] = melt['variable'].str.split(expand=True)
melt = melt.drop('variable', axis=1)

melt

  Region/Province               Commodity Amount  Year     Month
0     PHILIPPINES       Atis [Sugarapple]     ..  2018   January
1     PHILIPPINES                 Avocado     ..  2018   January
2     PHILIPPINES  Banana Bungulan, green  12.57  2018   January
3     PHILIPPINES        Banana Cavendish   9.96  2018   January
4     PHILIPPINES       Atis [Sugarapple]     ..  2018  February
5     PHILIPPINES                 Avocado     ..  2018  February
6     PHILIPPINES  Banana Bungulan, green  12.48  2018  February
7     PHILIPPINES        Banana Cavendish    8.8  2018  February

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM