对于 Pandas 0.24 或更高版本,我看到以下令人讨厌的非向后兼容行为groupby.ffill
. 基本上,如果您将其应用于具有 MultiIndex 索引和 MultiIndex 列的 DataFrame,将会有
- 对应于
groupby
参数创建的新列(GROUP
下面示例中的列),以及 - 列展平为元组。(
(NAME, Jane)
在下面的例子中)
>>> df
NAME
Jane John
GROUP TEAM
1 1 50.0 100.0
2 NaN 200.0
3 100.0 NaN
>>> df.groupby('GROUP').ffill()
GROUP (NAME, Jane) (NAME, John)
GROUP TEAM
1 1 1 50.0 100.0
2 1 50.0 200.0
3 1 100.0 200.0
具有所需输出的 Pandas 0.21 或更低版本都不会出现问题:
NAME
Jane John
GROUP TEAM
1 1 50.0 100.0
2 50.0 200.0
3 100.0 200.0
为了帮助重现该案例,您可以使用以下代码创建原始代码df
:
data = {'John' : [100, 200, np.nan], 'Jane' : [50, np.nan, 100]}
df = pd.DataFrame.from_dict(data)
df.index = pd.MultiIndex.from_tuples([(1, 1), (1, 2), (1, 3)], names=['GROUP', 'TEAM'])
df.columns = pd.MultiIndex.from_product([['NAME'], ['Jane', 'John']])
我试图设置as_index=False
在groupby()
. 它不会改变输出。
所以问题是如何使用 Pandas 0.24 或更高版本获得所需的输出?