我正在尝试对合并的数据框进行分析。目前,我的数据是这样的:
data2 = pd.DataFrame({'county':['A', 'B', 'C', 'D'],
'1990pop': [100, 200, 150, 400],
'1990price': [35, 20, 10, 60],
'1991pop': [110, 210, 160, 410],
'1991price': [7, 9, 8, 15]})
data2.set_index('county')
我想创建一个MultiIndex,以便为每一行看到一个县,然后每个县都有一个“人口”和“价格”变量的条目,并且对于1990年和2000年,每个县只有一个列1991年。
Here's what I'd like the dataframe to look like
我尝试了各种合并指南和MultiIndex指南,但这超出了我的能力范围。非常感谢您的帮助!
答案 0 :(得分:2)
这是您需要的吗? #!/bin/bash
for i in {1..15}
do
newdate=`/bin/date -v +"$i"d +%Y%m%d`
echo newdate=$newdate
curl -k -s "https://api.earningscalendar.net/?date=$newdate" | jq type
done
+ wide_to_long
+ unstack
stack
答案 1 :(得分:2)
columns.str.extract
与regex
data2.set_axis(
[*data2.columns.str.extract('(\d{4})(.*)').values.T],
1, inplace=False
).stack().rename_axis(['country', 'type'])
1990 1991
country type
A pop 100 110
price 35 7
B pop 200 210
price 20 9
C pop 150 160
price 10 8
D pop 400 410
price 60 15
答案 2 :(得分:1)
由于年份安全地为4位数字,所以我将在列上创建一个MultiIndex,然后创建stack
:
data2.columns = pd.MultiIndex.from_arrays([data2.columns.str[0:4], data2.columns.str[4:]],
names=[None, 'Type'])
data2.stack(1)
1990 1991
county Type
A pop 100 110
price 35 7
B pop 200 210
price 20 9
C pop 150 160
price 10 8
D pop 400 410
price 60 15