2024-06-01 02:18:29 发布
网友
我有一个如下所示的数据帧: Multi-index dataframe by columns
我想得到3个数据帧,每个列命名(指南针、加速度、陀螺仪),时间索引保持不变,每个列命名三个数据帧(df1、df2、df3)
我试过了 for index,row in df.iterrows(): 但我真的无法让它发挥作用 我在想一些事情{}和{},但我真的不知道怎么做
for index,row in df.iterrows():
您可以将前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中阅读更多有关的信息
groupby允许您使用相同的级别_值沿多索引级别拆分数据帧。我们将使用DataFrame.xs删除分组索引级别,只留下您关心的列。单独的数据帧存储在字典中,由原始列MultiIndex的唯一级别1值设置关键字
groupby
DataFrame.xs
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可以很容易地使用这种拆分,因此您甚至不需要存储单独的数据帧;您可以使用GroupBy.apply分别操纵它们
GroupBy.apply
您可以将前3列保存在csv文件中,并对其他csv文件重复该过程2次以上
您可以选择数据框中的3列,如下所示:
其中x=您的“大数据帧”的第一列
在这种情况下,usecols属性非常有用
您可以在:Pandas.read_csv中阅读更多有关的信息
groupby
允许您使用相同的级别_值沿多索引级别拆分数据帧。我们将使用DataFrame.xs
删除分组索引级别,只留下您关心的列。单独的数据帧存储在字典中,由原始列MultiIndex的唯一级别1值设置关键字样本数据
代码
由于
groupby
可以很容易地使用这种拆分,因此您甚至不需要存储单独的数据帧;您可以使用GroupBy.apply
分别操纵它们相关问题 更多 >
编程相关推荐