gpt4 book ai didi

python - reshape MultiIndex 以分离

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:24 25 4
gpt4 key购买 nike

看了pandas和MultiIndex的文档,这里的很多帖子,我还是没有完全理解这个概念。有人可以帮我找到这一行代码吗?

我想根据 xls 文件中的数据创建箱线图。线索是显示两个箱线图,一个用于参数 = 33,另一个用于参数 = 77。所以我的数据集需要按参数拆分结果。由于我没有完全理解这个概念,任何以某种方式拆栈的尝试都失败了

# -*- coding: utf-8 -*-
import pandas
import numpy as np
wbName= "Test (1).xlsx"
wsName = "Sheet1"
sort_by=['Name','Parameter']
df = pandas.read_excel(open(wbName, "rb"), sheetname=wsName)
id_col=list()
for sb in sort_by:
id_col.append(np.where(df.columns.values==sb)[0][0])
df = pandas.read_excel(open(wbName, "rb"), sheetname=wsName, index_col=id_col)
print(df)
#oneline magic needed
df.plot.box()

所以 print(df) 返回(如预期的那样)

Name Parameter        
sdf 33 99
33 99
33 99
33 645
33 345
77 567
77 45
77 456
77 456
77 234
77 576
77 45
ere 33 99
33 99
33 99
33 645
33 345
77 567
77 45
77 456
77 456
77 234
77 576
77 45

但我假设我只需要一行来转换成(数字不是上面的例子)

Result             
Parameter 33 77
Name
sdf 99 567
99 45
99 456
645 456
345 456
ere 99 546
99 465
99 456
645 46

最佳答案

问题是您的 pd.MultiIndex 不是唯一的。

假设你的系列是s

df = pd.DataFrame({n: g.reset_index(drop=True) for n, g in s.groupby(level=[0, 1])})
df.stack(0).reset_index(0, drop=True).sort_index()

enter image description here


设置

import pandas as pd
from io import StringIO

txt = """Name Parameter Value
sdf 33 99
sdf 33 99
sdf 33 99
sdf 33 645
sdf 33 345
sdf 77 567
sdf 77 45
sdf 77 456
sdf 77 456
sdf 77 234
sdf 77 576
sdf 77 45
ere 33 99
ere 33 99
ere 33 99
ere 33 645
ere 33 345
ere 77 567
ere 77 45
ere 77 456
ere 77 456
ere 77 234
ere 77 576
ere 77 45"""

s = pd.read_csv(StringIO(txt), delim_whitespace=True, index_col=[0, 1], squeeze=True)

关于python - reshape MultiIndex 以分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40564877/

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