Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 熊猫分组命名聚合_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 熊猫分组命名聚合

Python 3.x 熊猫分组命名聚合,python-3.x,pandas,Python 3.x,Pandas,我想将pandas从0.25.3升级到版本1 给定一个数据帧 import pandas as pd d = {'group': [1, 2, 2], 'value': [3, 4, 5]} df = pd.DataFrame(data=d) 我应该如何迁移以下groupby aggregation = { "value": { "min": lambda x: x.min(skipna=True), } } grouped = ( df[["gro

我想将pandas从0.25.3升级到版本1 给定一个数据帧

import pandas as pd


d = {'group': [1, 2, 2], 'value': [3, 4, 5]}
df = pd.DataFrame(data=d)
我应该如何迁移以下groupby

aggregation = {
    "value": {
        "min": lambda x: x.min(skipna=True),
    }
}
grouped = (
    df[["group", "value"]]
        .groupby(["group"], as_index=False)
        .agg(aggregation)
)

这无法按预期工作,因为缺少组列。请参阅
grouped.columns的输出

多索引([(‘组’,“”), (‘值’、‘最小’)], )

vs

索引(['min'],dtype='object')


我找到的唯一解决方案是也包括
列。似乎
因为_index=False
不再起作用了

grouped = (
    df[["group", "value"]]
        .groupby(["group"], as_index=True)
        .agg(
            group=NamedAgg(column='group', aggfunc=lambda x: x.iloc[0]),
            min=pd.NamedAgg(column='value', aggfunc='min')
        )
)

这是熊猫1.0中的一个bug。我提出了这个问题。 升级到pandas 1.1,您的代码将开始工作。
不升级的最简单修复方法是分离聚合和重命名

aggregation = {
    "value": lambda x: x.min(skipna=True),
    
}
grouped = (
    df[["group", "value"]]
        .groupby(["group"], as_index=False)
        .agg(aggregation)
)
grouped.rename(columns={'value':'min'}, inplace=True)
aggregation = {
    "value": lambda x: x.min(skipna=True),
    
}
grouped = (
    df[["group", "value"]]
        .groupby(["group"], as_index=False)
        .agg(aggregation)
)
grouped.rename(columns={'value':'min'}, inplace=True)