相关疑难解决方法(0)

扁平化多指数柱的简洁方法

在groupby-aggregate中使用多个函数会产生一个多索引,然后我想要展平.

例:

df = pd.DataFrame(
    {'A': [1,1,1,2,2,2,3,3,3],
     'B': np.random.random(9),
     'C': np.random.random(9)}
)
out = df.groupby('A').agg({'B': [np.mean, np.std], 'C': np.median})

# example output

          B                   C
       mean       std    median
A
1  0.791846  0.091657  0.394167
2  0.156290  0.202142  0.453871
3  0.482282  0.382391  0.892514
Run Code Online (Sandbox Code Playgroud)

目前,我是这样手动完成的

out.columns = ['B_mean', 'B_std', 'C_median']
Run Code Online (Sandbox Code Playgroud)

这给了我想要的结果

     B_mean     B_std  C_median
A
1  0.791846  0.091657  0.394167
2  0.156290  0.202142  0.453871
3  0.482282  0.382391  0.892514
Run Code Online (Sandbox Code Playgroud)

但是我正在寻找一种自动化这个过程的方法,因为这是单调的,耗时的,并且允许我在重命名列时进行拼写错误.

在进行groupby-aggregate时,有没有办法返回扁平索引而不是多索引?

我需要将列展平以保存到文本文件,然后由不处理多索引列的其他程序读取该文件.

pandas pandas-groupby

7
推荐指数
4
解决办法
3982
查看次数

Pandas 中与 Groupby 的滚动关联

假设我有一个类似于下面的 Pandas 数据框,我如何获得 2 个特定列和按“ID”列分组之间的滚动相关性(本例中为 2 天)?我熟悉 Pandas roll_corr() 函数,但我不知道如何将其与 groupby() 子句结合起来。

我拥有的:

ID  Date    Val1    Val2
A   1-Jan   45      22
A   2-Jan   15      66
A   3-Jan   55      13
B   1-Jan   41      12
B   2-Jan   87      45
B   3-Jan   82      66
C   1-Jan   33      34
C   2-Jan   15      67
C   3-Jan   46      22
Run Code Online (Sandbox Code Playgroud)

我需要的:

ID  Date    Val1    Val2    Rolling_Corr
A   1-Jan   45      22  
A   2-Jan   15      66      0.1
A   3-Jan   55      13      0.16
B   1-Jan   41      12  
B   2-Jan   87 …
Run Code Online (Sandbox Code Playgroud)

python group-by correlation pandas

5
推荐指数
1
解决办法
5994
查看次数

标签 统计

pandas ×2

correlation ×1

group-by ×1

pandas-groupby ×1

python ×1