首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按列名拆分dataframe中的多索引数据帧

按列名拆分dataframe中的多索引数据帧
EN

Stack Overflow用户
提问于 2020-01-23 01:17:04
回答 2查看 1.2K关注 0票数 2

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

我想得到3个数据帧命名为每个列(指南针,加速度,陀螺仪)与时间索引不动,每个三列(df1,df2,df3)。

我试过for index,row in df.iterrows():,但不能让它真正工作,我在想用stack()unstack()命名,但不知道怎么用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-23 02:26:40

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

样本数据

代码语言:javascript
复制
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

代码

代码语言:javascript
复制
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中很容易获得,您甚至不需要存储单独的DataFrames;您可以使用GroupBy.apply分别操作它们。

票数 1
EN

Stack Overflow用户

发布于 2020-01-23 01:25:50

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

您可以按如下方式选择数据框中的3列:

代码语言:javascript
复制
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= "big dataframe“的第一列

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

有关更多信息,请访问:Pandas.read_csv

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59865021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档