在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 数据框,我如何获得 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)