我正在尝试将带有一行的表格转换为包含12列且使用pandas 150年的表格。基本上,一年过去了,Y轴和月份将在X轴上运行。
我的df正在返回以下内容:
如何使用第一列中的日期创建表格,其中x轴为年,y轴为12个月?
for county in CntyList:
for model in models:
for num in range(0, 33):
#Outfile = r'E:\\ClimateChange\\Tables\\Counties\\' + str(county) + r'_' + str(folder) + r'_' + str(model) + r'.csv'
rows = concatDF.ix[num]
print(rows)
答案 0 :(得分:1)
我不确定我们要问的是什么,因为发布原始数据(不是图像)的最小示例以及您正在寻找的输出样本非常重要。
无论如何,我试图首先为您重新创建一些假数据,然后以您所描述的方式对其进行转动。
我假设您拥有1800行原始数据 - 从1950年开始的150年中每个月都有1个月。
months = np.tile(np.arange(1,13), 150) * 10000
years = np.repeat(np.arange(1950, 2100), 12)
idx = months + years
df = pd.DataFrame(index=idx, data={'num' :np.random.rand(len(idx))})
这是数据框的负责人 - 1950年的前5个月
num
11950 0.324358
21950 0.577816
31950 0.133126
41950 0.707563
51950 0.667286
尾巴 - 2099年的最后5个月
num
82099 0.103834
92099 0.920796
102099 0.302548
112099 0.298861
122099 0.958643
现在我们可以使用to_datetime
函数
date = pd.to_datetime(idx, format='%m%Y')
df['Year'] = date.year
df['Month'] = date.month
df.pivot(index='Year', columns='Month')
带输出
num \
Month 1 2 3 4 5 6 7
Year
1950 0.324358 0.577816 0.133126 0.707563 0.667286 0.214770 0.833923
1951 0.727718 0.818254 0.132464 0.124236 0.074853 0.183405 0.387825
1952 0.156100 0.968507 0.588337 0.410274 0.811571 0.790409 0.554290
1953 0.313295 0.366085 0.442786 0.834929 0.565413 0.215566 0.395442
1954 0.185577 0.498335 0.726637 0.209410 0.426887 0.487188 0.202640
Month 8 9 10 11 12
Year
1950 0.646929 0.622495 0.417010 0.718361 0.752805
1951 0.531334 0.969626 0.556064 0.114697 0.212898
1952 0.451180 0.488284 0.344732 0.054810 0.276036
1953 0.338134 0.456241 0.647255 0.966014 0.865256
1954 0.966250 0.870074 0.853948 0.411874 0.322245
使用to_datetime
将索引转换为日期时间。将列year
和month
添加到您的数据框,然后进行数据透视。如果这是你想要的,请在评论中告诉我。