亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

熊貓在具有多個標題的數據框中對數據進行排序

熊貓在具有多個標題的數據框中對數據進行排序

慕碼人8056858 2023-03-30 17:24:21
例如,我有一個像這里Datasample這樣的數據表,我定義了 4 個標題,我知道我可以使用 df['2020-01-01', 'A', C1', 'D1' 訪問最后一個標題之一]. 如果我想同時閱讀“D1”和“D2”怎么辦?還是“D1”和“D5”?什么是正確的代碼,謝謝!
查看完整描述

1 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

首先,我們創建一個 DataFrame(帶有 MultiIndex),就像您的示例中的那樣:


import numpy as np

import pandas as pd


data = 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' columns

df.loc[:, (slice(None), 'A')]??


# get the 'C1' column

df.loc[:, (slice(None), slice(None), 'C1')]??


# get the D1 and D5 columns

df.loc[:, (slice(None), slice(None), slice(None), ['D1', 'D5'])]??


y? ? ? ?2020-01-01

a? ? ? ?A? ? ? ?B

b? ? ? ?C1? ? ? C3

c? ? ? ?D1? ? ? D5

0? ? ? ?0? ? ? ?4

1? ? ? ?8? ? ? ?12

2? ? ? ?16? ? ? 20

3? ? ? ?24? ? ? 28

4? ? ? ?32? ? ? 36

5? ? ? ?40? ? ? 44

6? ? ? ?48? ? ? 52

7? ? ? ?56? ? ? 60

8? ? ? ?64? ? ? 68

9? ? ? ?72? ? ? 76

10? ? ? 80? ? ? 84

這是執行最后一個操作后的 MultiIndex:


df.loc[:, (slice(None), slice(None), slice(None), ['D1', 'D5'])].columns


MultiIndex([('2020-01-01', 'A', 'C1', 'D1'),

? ? ? ? ? ? ('2020-01-01', 'B', 'C3', 'D5')],

? ? ? ? ? ?names=['y', 'a', 'b', 'c'])

查看完整回答
反對 回復 2023-03-30
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號