首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫重命名多级查找列名

熊猫重命名多级查找列名
EN

Stack Overflow用户
提问于 2020-01-16 21:26:26
回答 1查看 614关注 0票数 0

我有一个dataframe,它的列名已更改为

代码语言:javascript
复制
MultiIndex([(     'ID',       ''),
            ('Probability',   'mean'),
            ('Probability', 'median'),
            ('Uncertainty',   'mean'),
            ('Uncertainty', 'median')],
          )

因为我做了

代码语言:javascript
复制
data[data["ID"].notnull()].groupby(["ID"]).agg({"Probability":["mean", "median"], "Uncertainty":["mean", "median"]}).reset_index()

我想将列名重命名如下:

代码语言:javascript
复制
["ID", "Probability_mean", "Probability_median", "Uncertainty_mean", "Uncertainty_median"]

我可以将每个原始列名分别重命名,但不能将它们重命名在一起。我还试图将数据压缩,因为我认为它是一个多索引或多级。虽然看上去是这样,但并不是这样。大多数多索引功能不适用于它。有办法重命名这些列吗?我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-16 21:38:44

如果使用pd.__version__ > 0.25.0,则可以使用NamedAggs创建字典。

reset_index之前,您可以使用str.join在groupby之后折叠MultiIndex。然后是reset_index。这避免了'ID'的问题。此外,不需要删除空组键,因为groupby默认会忽略这些键。

样本数据

代码语言:javascript
复制
import pandas as pd
import numpy as np
N = 6
df = pd.DataFrame({'ID': np.arange(N)//2, 
                   'Probability': np.random.normal(0,1,N),
                   'Uncertainty': np.random.normal(0,1,N)})
agg_d = {'Probability': ['mean', 'median'], 'Uncertainty': ['mean', 'median']}

代码:

>= 0.25.0

代码语言:javascript
复制
d = {f'{k}_{x}': pd.NamedAgg(column=k, aggfunc=x) for k,v in agg_d.items() for x in v}
df.groupby('ID').agg(**d).reset_index()

< 0.25.0

代码语言:javascript
复制
res = df.groupby('ID').agg(agg_d)
res.columns = ['_'.join(tup) for tup in res.columns]
res = res.reset_index()

输出:

代码语言:javascript
复制
   ID  Probability_mean  Probability_median  Uncertainty_mean  Uncertainty_median
0   0          0.795119            0.795119          0.466417            0.466417
1   1          0.150184            0.150184         -0.132942           -0.132942
2   2          1.250202            1.250202         -0.102760           -0.102760
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59778041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档