我的文件看起来像这样:
2012-09-03 vardpolitik 30 Skop 30.3 6.5 4.1 2.9 33.5 6 9.8 6.3 1203 2020 501 166
2012-09-03 vardpolitik 30 Sifo 28.7 6.6 4.8 3.8 33.3 5.9 8.9 7.2 1203 2020 501 166
2012-12-03 vardpolitik 30 Sifo 28.2 5.4 4.5 3.6 32.1 5.9 9.7 10 75 117 17 11
2012-08-20 vardpolitik 30 United Minds 27.8 5.8 3.3 4.7 33.1 6.9 8.6 8.8 264 369 91 28
2012-11-07 vardpolitik 30 YouGov 30.3 5.7 3.8 3.5 31.3 6.7 7.1 10.9 1138 1924 389 168
2012-11-27 vardpolitik 30 Demoskop 33.5 5.9 2.9 2.8 32 5.1 8.3 8.6 1700 2602 585 293
2012-10-01 vardpolitik 30 Sifo 28.8 5.6 4.4 3.4 32.1 6.5 10 7.7 1207 2044 503 162
通过读取Pandas DataFrame中的输入,您将获得以下输出:
In [22]: df = pd.DataFrame.from_csv('vardpolitik-opinion-30.csv', sep='\t', header=None, index_col=[3,0], parse_dates=True)
In [23]: df
Out[23]:
1 2 4 5 6 7 8 9 \
3 0
Skop 2012-09-03 vardpolitik 30 30.3 6.5 4.1 2.9 33.5 6.0
Sifo 2012-09-03 vardpolitik 30 28.7 6.6 4.8 3.8 33.3 5.9
2012-12-03 vardpolitik 30 28.2 5.4 4.5 3.6 32.1 5.9
United Minds 2012-08-20 vardpolitik 30 27.8 5.8 3.3 4.7 33.1 6.9
YouGov 2012-11-07 vardpolitik 30 30.3 5.7 3.8 3.5 31.3 6.7
Demoskop 2012-11-27 vardpolitik 30 33.5 5.9 2.9 2.8 32.0 5.1
Sifo 2012-10-01 vardpolitik 30 28.8 5.6 4.4 3.4 32.1 6.5
现在,我想根据MultiIndex中的第3列对所有内容进行分组。我该怎么做?
1 2 4 5 6 7 8 9 \
3 0
Skop 2012-09-03 vardpolitik 30 30.3 6.5 4.1 2.9 33.5 6.0
Sifo 2012-09-03 vardpolitik 30 28.7 6.6 4.8 3.8 33.3 5.9
2012-12-03 vardpolitik 30 28.2 5.4 4.5 3.6 32.1 5.9
2012-10-01 vardpolitik 30 28.8 5.6 4.4 3.4 32.1 6.5
United Minds 2012-08-20 vardpolitik 30 27.8 5.8 3.3 4.7 33.1 6.9
YouGov 2012-11-07 vardpolitik 30 30.3 5.7 3.8 3.5 31.3 6.7
Demoskop 2012-11-27 vardpolitik 30 33.5 5.9 2.9 2.8 32.0 5.1
答案 0 :(得分:0)
只需使用groupby
方法并传递level
参数:
In [17]: df.head()
Out[17]:
1 2 4 5 6 7 8 9 10 \
3 0
Skop 2012-09-03 vardpolitik 30 30.3 6.5 4.1 2.9 33.5 6.0 9.8
Sifo 2012-09-03 vardpolitik 30 28.7 6.6 4.8 3.8 33.3 5.9 8.9
2012-12-03 vardpolitik 30 28.2 5.4 4.5 3.6 32.1 5.9 9.7
United Minds 2012-08-20 vardpolitik 30 27.8 5.8 3.3 4.7 33.1 6.9 8.6
YouGov 2012-11-07 vardpolitik 30 30.3 5.7 3.8 3.5 31.3 6.7 7.1
11 12 13 14 15
3 0
Skop 2012-09-03 6.3 1203 2020 501 166
Sifo 2012-09-03 7.2 1203 2020 501 166
2012-12-03 10.0 75 117 17 11
United Minds 2012-08-20 8.8 264 369 91 28
YouGov 2012-11-07 10.9 1138 1924 389 168
[5 rows x 14 columns]
In [18]: gb = df.groupby(level=0)
In [19]: gb.mean()
Out[19]:
2 4 5 6 7 8 9 10 11 \
3
Demoskop 30 33.5000 5.9000 2.9000 2.8 32.0 5.1 8.3000 8.6
Sifo 30 28.5667 5.8667 4.5667 3.6 32.5 6.1 9.5333 8.3
Skop 30 30.3000 6.5000 4.1000 2.9 33.5 6.0 9.8000 6.3
United Minds 30 27.8000 5.8000 3.3000 4.7 33.1 6.9 8.6000 8.8
YouGov 30 30.3000 5.7000 3.8000 3.5 31.3 6.7 7.1000 10.9
12 13 14 15
3
Demoskop 1700.0000 2602.0000 585.0000 293
Sifo 828.3333 1393.6667 340.3333 113
Skop 1203.0000 2020.0000 501.0000 166
United Minds 264.0000 369.0000 91.0000 28
YouGov 1138.0000 1924.0000 389.0000 168
[5 rows x 13 columns]
答案 1 :(得分:0)
我不确定我明白你想拥有什么。如果您想要第3列的多索引,那么您已经拥有它了吗?您的第3列目前是MultiIndex。 您是否希望列0和1也是多索引?