如何解决防止 Pandas groupby.ffill 创建新列和展平 MultiIndex 列
对于 Pandas 0.24 或更高版本,我看到 groupby.ffill
的以下烦人的非向后兼容行为。基本上,如果您将其应用于具有多索引索引和多索引列的 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),3)],names=['GROUP','TEAM'])
df.columns = pd.MultiIndex.from_product([['NAME'],['Jane','John']])
我尝试在 as_index=False
中设置 groupby()
。它不会改变输出。
那么问题是如何使用 Pandas 0.24 或更高版本获得所需的输出?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。