【发布时间】:2018-03-28 19:49:46
【问题描述】:
我需要对 MultiIndex DataFrame 进行.expanding 计算。但我需要它反向运行。这是一个示例 DataFrame:
np.random.seed(456)
j = [(a, b) for a in ['A','B','C'] for b in pd.date_range('2018-01-01', periods=5, freq='W')]
i = pd.MultiIndex.from_tuples(j, names=['Name','Num'])
df = pd.DataFrame(np.random.randn(15), i, columns=['Vals'])
df.loc[df['Vals'] < 0] = np.nan
下面是我想要对每个 0 级索引值执行的操作的示例:
k = df.loc['A']
k['Missing'] = k[::-1].isnull().expanding().sum() # Expanding-sum on reversed level-1
这会为那个顶级值'A' 产生正确的结果:
Vals Missing
Num
2018-01-07 NaN 2.0
2018-01-14 NaN 1.0
2018-01-21 0.618576 0.0
2018-01-28 0.568692 0.0
2018-02-04 1.350509 0.0
但是如何将它应用于所有顶级索引值,以便我可以设置df['Missing'] =?
我正在尝试df.groupby('Name')[::-1].isnull().expanding().sum() 形式的东西......但我无法获得允许反转一级索引以进行计算的函数形式。
执行此操作的熊猫表达式是什么?
【问题讨论】:
标签: pandas dataframe pandas-groupby multi-index