1
選擇考慮下面的多指標熊貓臺系列:功能通過標籤
import pandas as pd
import numpy as np
val = np.array([ 0.4, -0.6, 0.6, 0.5, -0.4, 0.2, 0.6, 1.2, -0.4])
inds = [(-1000, 1921.6), (-1000, 1922.3), (-1000, 1923.0), (-500, 1921.6),
(-500, 1922.3), (-500, 1923.0), (-400, 1921.6), (-400, 1922.3),
(-400, 1923.0)]
names = ['pp_delay', 'wavenumber']
example = pd.Series(val)
example.index = pd.MultiIndex.from_tuples(inds, names=names)
example
現在看起來應該
pp_delay wavenumber
-1000 1921.6 0.4
1922.3 -0.6
1923.0 0.6
-500 1921.6 0.5
1922.3 -0.4
1923.0 0.2
-400 1921.6 0.6
1922.3 1.2
1923.0 -0.4
dtype: float64
我通過pp_delay
要組例子並選擇範圍內的每個組使用wavenumber
索引並對該子組執行操作。爲了澄清我的意思,我舉幾個例子。
這是一個基於位置的解決方案。
example.groupby(level="pp_delay").nth(list(range(1,3))).groupby(level="pp_delay").sum()
這給
pp_delay
-1000 0.0
-500 -0.2
-400 0.8
dtype: float64
現在最後給每個pp_delay
組的元素已經被求和。
另一種解決方案,更直接的是在循環遍歷組:
delays = example.index.levels[0]
res = np.zeros(delays.shape)
roi = slice(1922, 1924)
for i in range(3):
res[i] = example[delays[i]][roi].sum()
res
給
array([ 0. , -0.2, 0.8])
反正我不喜歡它,多醚,因爲它不合身通常的熊貓風格。
現在我非常想是這樣的:
example.groupby(level="pp_delay").loc[1922:1924].sum()
,或者甚至像
example[:, 1922:1924].sum()
但顯然大熊貓索引不工作的方式。任何人都有更好的辦法?
乾杯