亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按列名拆分數據框中的多索引數據框

按列名拆分數據框中的多索引數據框

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 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號