【发布时间】:2018-07-22 01:59:25
【问题描述】:
我有一个dataframe,它有多个列,包含不同的类别(['A']、['1'、'2'、'3'、'4'])
Index1 Index2 X Y
A '1' 1 2
A '1' 5 3
A '1' 3 4
A '2' 3 1
A '2' 4 1
A '2' 3 5
A '2' 1 2
A '3' 5 3
A '3' 3 4
A '4' 3 1
A '4' 4 1
A '4' 3 5
我需要循环它,以便为每对索引带来四个不同的飞溅图(将来会有一个 B 索引,这就是多索引的原因)。
目前我的代码为每行提供一个图表(在此示例中为 12 个),如果我最后break 它只给我一个
我尝试了.iterows() 和.itertuples() 他们都得到了相同的结果(可能是用错了)
import pandas as pd
from matplotlib import pyplot as plt
Index1 = ['A','A','A','A','A','A','A','A','A','A','A','A']
Index2 = ['1','1','1','2','2','2','2','3','3','4','4','4']
X = [1,5,3,3,4,3,1,5,3,3,4,3]
Y = [2,3,4,1,1,5,2,3,4,1,1,5]
df = pd.DataFrame(Index1)
df = df.assign(Index2 = Index2,X=X,Y=Y)
df.set_index(['Index1','Index2'])
second_index = 1
for index in df.itertuples():
df = df.groupby('Index2').get_group(second_index)
df.plot.scatter(x = 'X', y = 'Y')
plt.show()
break
我在dictionary 上运行了一个类似的代码,该代码运行在相同的逻辑上,它为我提供了我需要的所有图表。
p.s.:这不是真正的代码,只是一般的想法,我可能犯了一些错误
【问题讨论】:
-
这里的问题到底是什么?循环的目的是什么?此处不提供minimal reproducible example 本质上意味着您要求其他人为您完成所有工作。虽然您自己创建这样的minimal reproducible example 甚至可能允许您单独解决问题而无需在这里提问 - 如果您没有minimal reproducible example 在此处发布。
-
对不起,我把它弄复杂了,我只是想尽可能地解释,我编辑了问题以更好地复制情况,正如我在帖子中所说,问题是当我运行我的代码而不是每对索引绘制 1 个图表的代码时,它会为数据框中的每一行绘制相同的图表
-
请注意,这里没有
Multiindex。你所说的Index是一个普通的列。 -
我知道,我是在之后添加的,但由于某种原因它无法正常工作(在原始代码中,我不知道为什么)
df.set_index(['Index1','Index2'])我的意思是... -
就这样吧。索引应该以某种方式索引您的数据,如果不同行有多个相同的索引,则情况并非如此。
标签: python python-2.7 dataframe matplotlib