熊猫在具有多个标题的数据框中对数据进行排序

例如,我有一个像这里Datasample这样的数据表,我定义了 4 个标题,我知道我可以使用 df['2020-01-01', 'A', C1', 'D1' 访问最后一个标题之一]. 如果我想同时阅读“D1”和“D2”怎么办?还是“D1”和“D5”?什么是正确的代码,谢谢!



慕码人8056858
浏览 60回答 1
1回答

蛊毒传说

首先,我们创建一个 DataFrame(带有 MultiIndex),就像您的示例中的那样:import numpy as npimport pandas as pddata = np.arange(11 * 8).reshape((11, 8))midx = pd.MultiIndex.from_tuples(    [        ('2020-01-01', 'A', 'C1', 'D1'),        ('2020-01-01', 'A', 'C1', 'D2'),        ('2020-01-01', 'A', 'C2', 'D3'),        ('2020-01-01', 'A', 'C2', 'D4'),                ('2020-01-01', 'B', 'C3', 'D5'),        ('2020-01-01', 'B', 'C3', 'D6'),        ('2020-01-01', 'B', 'C4', 'D7'),        ('2020-01-01', 'B', 'C4', 'D8'),    ],    names=('y', 'a', 'b', 'c',))df = pd.DataFrame(data=data, columns=midx)df现在,我们使用有点麻烦的“索引切片”来提取感兴趣的列。这里有一些例子:# get the 'A' columnsdf.loc[:, (slice(None), 'A')]  # get the 'C1' columndf.loc[:, (slice(None), slice(None), 'C1')]  # get the D1 and D5 columnsdf.loc[:, (slice(None), slice(None), slice(None), ['D1', 'D5'])]  y       2020-01-01a       A       Bb       C1      C3c       D1      D50       0       41       8       122       16      203       24      284       32      365       40      446       48      527       56      608       64      689       72      7610      80      84这是执行最后一个操作后的 MultiIndex:df.loc[:, (slice(None), slice(None), slice(None), ['D1', 'D5'])].columnsMultiIndex([('2020-01-01', 'A', 'C1', 'D1'),            ('2020-01-01', 'B', 'C3', 'D5')],           names=['y', 'a', 'b', 'c'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python