我有一个与此类似的索引pandas DataFrame:
import pandas as pd
df = pd.DataFrame({'type':['good','good','bad'], 'nr':[0,1,2], 'value':[1,2,3]})
df.set_index(['type','nr'], inplace=True)
df
Out[153]:
| value
type nr |
--------+-------
good 0 | 1
1 | 2
--------+-------
bad 2 | 3
我想将值(使用matplotlib)与指标'good'/'bad'一起绘制。对于这个指标,一个0/1 numpy数组就足够了 - 0表示数据为'bad',1表示数据为'good'。但数据集非常大,我更喜欢生成器,而不是实际的数组。
我不知道如何从df
创建此数组/生成器。我需要像这样使用它:
import matplotlib.pyplot as plt
plt.figure()
plt.plot(good_or_bad_indicator)
plt.plot(df)
plt.show()
有人可以帮忙吗?
PS:我更喜欢基于lambda函数的解决方案,因为在我的实际情况中,'type'列中有两个以上的值,我可能想设计一个更复杂的指标来绘制。
答案 0 :(得分:2)
有几种方法可以获得指标:
df.index.get_level_values(0) == 'good'
是最简单的。如果您有多个"好"还要查看isin
。选项。你也可以迭代索引,如果你想要更复杂的东西(而不是x[0] ==
把一个lambda或方法放在x上):
[x[0] == 'good' for x in df.index]
如果您需要整行,可以使用df.iterrows()