Python 从现有数据帧创建多索引列数据帧
我有下面的数据框,每个观察都在一个单独的行上Python 从现有数据帧创建多索引列数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有下面的数据框,每个观察都在一个单独的行上 df = pd.DataFrame({'geo': ['US', 'US', 'US', 'NY', 'NY', 'NY', 'NY', 'CT', 'CT'], 'series': ['a', 'a', 'b', 'a', 'a', 'b', 'b', 'a', 'b'], 'value': [1,2,3,7,4,3,4,12,13], 'date': [
df = pd.DataFrame({'geo': ['US', 'US', 'US', 'NY', 'NY', 'NY', 'NY', 'CT', 'CT'],
'series': ['a', 'a', 'b', 'a', 'a', 'b', 'b', 'a', 'b'],
'value': [1,2,3,7,4,3,4,12,13],
'date': ['3/1', '3/2', '3/1', '3/1', '3/2', '3/1', '3/2', '3/1', '3/2']})
date geo series value
0 3/1 US a 1
1 3/2 US a 2
2 3/1 US b 3
3 3/1 NY a 7
4 3/2 NY a 4
5 3/1 NY b 3
6 3/2 NY b 4
7 3/1 CT a 12
8 3/2 CT b 13
我想要的:我想要重新组织数据框架,以便“日期”变量是索引,而geo&series是多索引列变量。即:
US US NY NY CT CT
a b a b a b
3/1 1 3 7 3 12 13
3/2 2 nan 4 4 nan nan
我尝试的内容:我尝试将索引设置为date、geo、series,然后使用“unstack”,但它会给我一个“重复值”错误。通常您可以
stack()
和unstack()
:
输出:
geo US NY CT
series a b a b a b
date
3/1 1.0 3.0 7.0 3.0 12.0 NaN
3/2 2.0 NaN 4.0 4.0 NaN 13.0
由于在三列日期、地理位置、系列
上存在重复数据,因此会出现重复错误,例如:
date geo series value
3/1 US a 1
3/1 US a 2
要确认这一点,请尝试执行以下操作:
df.duplicated(['date','geo','series']).any()
# should give you True
根据您要对副本执行的操作,您可以使用groupby
:
# mean:
(df.groupby(['date','geo','series'])
['value'].mean()
.unstack(['geo','series'])
)
# mean:
(df.groupby(['date','geo','series'])
['value'].mean()
.unstack(['geo','series'])
)