如何从合并表创建MultiIndex Dataframe?

时间:2019-05-14 19:37:05

标签: python pandas dataframe multi-index

我正在尝试对合并的数据框进行分析。目前,我的数据是这样的:

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指南,但这超出了我的能力范围。非常感谢您的帮助!

3 个答案:

答案 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.extractregex

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