相关疑难解决方法(0)

大熊猫的.groupby对面是否有"取消组合"操作?

假设我们从这个简单的表开始,存储在pandas数据帧中:

    name  age  family
0   john    1       1
1  jason   36       1
2   jane   32       1
3   jack   26       2
4  james   30       2
Run Code Online (Sandbox Code Playgroud)

然后我做

group_df = df.groupby('family')
group_df = group_df.aggregate({'name': name_join, 'age': pd.np.mean})
Run Code Online (Sandbox Code Playgroud)

其中groupby()是名称的简单聚合函数:

def name_join(list_names, concat='-'):
    return concat.join(list_names)
Run Code Online (Sandbox Code Playgroud)

输出是:

        age             name
family                      
1        23  john-jason-jane
2        28       jack-james
Run Code Online (Sandbox Code Playgroud)

现在的问题.

是否有快速,有效的方法从聚合表中获取以下内容?

    name  age  family
0   john   23       1
1  jason   23       1
2   jane   23       1
3   jack   28       2
4  james   28       2
Run Code Online (Sandbox Code Playgroud)

(注意:数字只是示例,我不关心在此具体示例中取平均值后丢失的信息)

我认为我能做到的方式看起来效率不高:

  1. 创建空数据帧 …

python group-by pandas pandas-groupby

17
推荐指数
3
解决办法
3万
查看次数

Python Pandas将GroupBy对象转换为DataFrame

有两个问题看似相似,但它们不是同一个问题:这里这里.它们都调用了一种方法GroupBy,例如count()或者aggregate(),我知道它会返回一个方法DataFrame.我要问的是如何将GroupBy(类pandas.core.groupby.DataFrameGroupBy)对象本身转换为DataFrame.我将在下面说明.

构造DataFrame如下示例.

data_list = []
for name in ["sasha", "asa"]:
    for take in ["one", "two"]:
        row = {"name": name, "take": take, "score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)}
        data_list.append(row)
data = pandas.DataFrame(data_list)
Run Code Online (Sandbox Code Playgroud)

上面DataFrame应该如下所示(显然有不同的数字).

    name  ping     score take
0  sasha    72  0.923263  one
1  sasha    14  0.724720  two
2    asa    76  0.774320  one
3    asa    71  0.128721  two
Run Code Online (Sandbox Code Playgroud)

我想要做的是按"name"和"take"( …

python pandas

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

pandas ×2

python ×2

group-by ×1

pandas-groupby ×1