考虑以下输入 Dataframe :
index | col_1 | col_2 |
1 | 1234 | 4567 |
2 | 3456 | 9453 |
Dataframe 的每一列都是一个序列(时间序列),我们希望进行一些计算,以创建长度等于输入的序列(例如,计算最后5个样本(op_1)和10个样本(op_2)的序列的运行平均值)。
最后,输出应按列的名称分组,如下所示:
Output:
| col_1 | col_2 |
index | value opr_1 opr_2 | value opr_1 opr_2 |
1 | 1234 10 1 | 4567 22 13 |
2 | 3456 18 6 | 9453 21 4 |
这应该允许我访问单个head col_1
下每个原始列的相关计算。
最初,我考虑手动增加输入 Dataframe 的级别,如下所示:
df.columns = pd.MultiIndex.from_product([df.columns, ['value']])
但是,我不知道如何单独在第二层运行apply
(考虑到我希望将列寻址为df['col_1']['value']
,然后将这些值放入df['col_1']['op_1']
内同一层的 Dataframe 中)。
因此,我尝试的第二种方法是为每个操作创建一个 Dataframe ,如下所示
op_1 = df.apply(lambda x: op_1_func(x, **params))
op_2 = df.apply(lambda x: op_2_func(x, **params))
然后合并这三个 Dataframe 以创建所需的多级视图。但是,我想不出一种方法来连接 Dataframe 以产生所需的输出。请帮助!
1条答案
按热度按时间m2xkgtsf1#
给出以下示例:
这里是一种方法来做到这一点使用Pandas先进的索引与分层索引:
然后: