gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:26:41 24 4
gpt4 key购买 nike

我对 python 比较陌生,一直在使用 Pandas 来操作科学数据。我有 79 个 CSV 格式的数据集,这些数据集的像素值(大量 NaN)的卫星图像不一致,这些数据已平均为双月值(平均两个月)。数据的格式类似于示例数据框“df”。实际时间序列数据从 1985 年到 2020 年,底部的屏幕截图显示了它的实际格式以供引用。

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”。最终的数据集如下所示:
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 数据。它还创建一个索引值并将其称为“分组”,并调整双月分组的顺序。
df.pivot(index='year', columns = 'grouping', values = ('region_1')).reset_index()
为每个区域创建两个单独的数据框会更好吗?
我似乎也找不到任何显示如何执行此操作的帖子。
enter image description here

最佳答案

我认为您需要做的就是使用 values 的列表。范围:

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)
输出(被剪切和粘贴弄乱的列对齐方式):
    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

关于python - Pandas:将 CSV 数据从单列重新格式化为多个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65223566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com