gpt4 book ai didi

python - 按列名拆分数据框中的多索引数据框

转载 作者:行者123 更新时间:2023-12-04 10:42:27 25 4
gpt4 key购买 nike

我有一个如下所示的数据框: Multi-index dataframe by columns

我想获得 3 个数据帧,每列(罗盘、加速器、陀螺仪)的名称与时间索引保持不变,每列三列(df1、df2、df3)。

我试过了for index,row in df.iterrows():但无法真正让它发挥作用我在想 stack()unstack() 但真的不知道怎么做。

最佳答案

groupby 允许您沿具有相同 level_values 的 MultiIndex 级别拆分 DataFrame。我们将使用 DataFrame.xs 删除分组索引级别,只留下您关心的列。单独的 DataFrame 存储在字典中,由原始列 MultiIndex 的唯一 level-1 值作为键。

示例数据

import pandas as pd
import numpy as np
np.random.seed(123)
df = pd.DataFrame(np.random.randint(1, 10, (4, 9)),
columns=pd.MultiIndex.from_product([['df1', 'df2', 'df3'],
['compass', 'gyro', 'accel']]))
# df1 df2 df3
# compass gyro accel compass gyro accel compass gyro accel
#0 3 3 7 2 4 7 2 1 2
#1 1 1 4 5 1 1 5 2 8
#2 4 3 5 8 3 5 9 1 8
#3 4 5 7 2 6 7 3 2 9

代码

d = {idx: gp.xs(idx, level=1, axis=1) for idx,gp in df.groupby(level=1, axis=1)}
d['gyro']
# df1 df2 df3
#0 3 4 1
#1 1 1 2
#2 3 3 1
#3 5 6 2

因为这样的拆分很容易通过 groupby 获得,您甚至可能不需要存储单独的 DataFrame;您可以使用 GroupBy.apply 分别操作它们中的每一个。

关于python - 按列名拆分数据框中的多索引数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59865021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com