在阅读了熊猫和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
但是我认为我只需要一行就可以进入(数字不会超过exaple)
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
答案 0 :(得分:1)
问题是您的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()
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)