为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Qyouu 2022-07-05 19:42:29
我有一个如下的数据框: Multi-index dataframe by columns我想获得 3 个数据帧,命名为每列(罗盘、加速度、陀螺仪),时间索引不变,每列三列(df1、df2、df3)。我已经尝试过 for index,row in df.iterrows(): ,但无法真正让它发挥作用而且我在想一些东西stack(),unstack()但不知道怎么做。
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

groupby允许您沿具有相同 level_values 的 MultiIndex 级别拆分 DataFrame。我们将使用DataFrame.xs删除分组索引级别,只留下您关心的列。单独的 DataFrame 存储在字典中,由原始列 MultiIndex 的唯一级别 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.


查看完整回答
反对 回复 2022-07-05
?
RISEBY

TA贡献1856条经验 获得超5个赞

您可以将前 3 列保存在 csv 文件中,并对其他 csv 文件重复该过程 2 次...

您可以像这样选择数据框的 3 列:

x = 0
data=pd.read_csv(file.csv, keep_default_na=False, skiprows=line_header, na_filter=False, usecols=[x,x+1,x+2])[[compass, accel, gyro]])

其中 x =“大数据框”的第一列

usecols 属性在这种情况下非常有用

你可以阅读更多关于:Pandas.read_csv


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信