首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas:将CSV数据从单列重新格式化为多个新列

Pandas:将CSV数据从单列重新格式化为多个新列
EN

Stack Overflow用户
提问于 2020-12-10 03:25:10
回答 1查看 46关注 0票数 2

我是python的新手,一直在使用Pandas来处理科学数据。我有79个CSV格式的数据集,这些数据集的像素值(许多NaNs)是不一致的卫星图像,已经平均为两个月一次的值(两个月平均在一起)。数据的格式类似于示例数据帧"df“。实际的时间序列数据从1985年到2020年,底部的屏幕截图显示了它的实际格式以供参考。

代码语言:javascript
复制
df =  pd.DataFrame({'grouping': ['F-M', 'A-M', 'J-J', 'A-S', 'O-N', 'D-J', 'F-M', 'A-M', 'J-J', 'A-S', 'O-N', 'D-J'],
                    'year': ['1985', '1985','1985','1985','1985','1985', '1986','1986','1986','1986','1986','1986'],
                    'region_1': ['NaN', 0.264, 0.339, 0.321, 0.305, 'NaN', 'NaN', 0.404, 0.206, 0.217, 0.266, 0.217 ],
                    'region_2': ['NaN', 0.457, 0.649,  0.625, 0.531, 'NaN', 0.503, 0.656, 0.437, 0.568, 0.547, 'NaN' ]})

我需要重新格式化数据,以便每行只有一年,每个两个月分组作为列标题。但是,每个数据集都有两个需要相互比较的区域。“4-5月区域1”和“4-5月区域2”。最终的数据集如下所示:

代码语言:javascript
复制
df2 = pd.DataFrame({'year':['1985', '1986'],
                    'F-M reg_1': ['NaN', 'NaN'],
                    'A-M reg_1': [0.264, 0.404],
                    'J-J reg_1': [0.339, 0.206],
                    'A-S reg_1': [0.321, 0.217],
                    'O-N reg_1': [0.305, 0.266],
                    'D-J reg_1': ['NaN', 0.217],
                    'F-M reg_2': ['NaN', 0.503],
                    'A-M reg_2': [0.457, 0.656],
                    'J-J reg_2': [0.649, 0.437],
                    'A-S reg_2': [0.635, 0.568],
                    'O-N reg_2': [0.531, 0.547],
                    'D-J reg_2': ['NaN', 'NaN']})

我尝试使用以下代码,但我不知道如何在数据框中包含region_2数据。它还创建了一个索引值,并将其称为" grouping“,并打乱了双月分组的顺序。

代码语言:javascript
复制
df.pivot(index='year', columns = 'grouping', values = ('region_1')).reset_index()

为每个区域创建两个单独的数据框是不是更好?

我似乎也找不到任何说明如何做到这一点的帖子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-10 05:01:24

我认为您需要做的就是为values参数使用一个列表:

代码语言:javascript
复制
bimonths = ['F-M', 'A-M', 'J-J', 'A-S', 'O-N', 'D-J']
df.pivot(index='year', columns = 'grouping', values = ['region_1','region_2']).reindex(bimonths, axis=1, level=1)

输出(列对齐被剪切和粘贴弄乱):

代码语言:javascript
复制
    region_1    region_2
grouping    F-M A-M J-J A-S O-N D-J F-M A-M J-J A-S O-N D-J
year                                                
1985    NaN 0.264   0.339   0.321   0.305   NaN NaN 0.457   0.649   0.625   0.531   NaN
1986    NaN 0.404   0.206   0.217   0.266   0.217   0.503   0.656   0.437   0.568   0.547   NaN
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65223566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档