我有一个dataFrame我已经汇总了一些数据,我正在绘制它。我想从groupby字段中获取值以用作图中的标签。
以下是我汇总的dataFrame:
code_values = code_graph.groupby(['code_desc']).agg({'product_id': pd.Series.nunique })
返回:
print code_values
product_id
code_desc
Product 1 30
Product 2 40
Product 3 50
Product 4 60
当我尝试访问code_desc字段以在matplotlib图中用作我得到的标签时:
print code_values['code_desc']
KeyError: u'no item named code_desc'
如何获取code_desc的值?
答案 0 :(得分:2)
从聚合值中,您应该可以使用:
code_values.index
您还可以获取groupby对象的groups字典的键,如:
grouped = code_graph.groupby(['code_desc'])
code_desc = grouped.groups.keys()
答案 1 :(得分:1)
如果您想以值的形式访问它们,它们可能不再是您的索引。最后考虑
code_values.reset_index(inplace=True)
print code_values['code_desc']
但是,很多内置visualization tools of pandas实际上会根据您的索引绘制值。那么,也许你想保留索引,但看看这些?
答案 2 :(得分:0)
使用索引作为单级索引。如果你有一个多级索引,你可以通过索引级别获取索引值。
txt="""code_desc,product_id
Product 1, 30
Product 1, 70
Product 2, 40
Product 3, 50
Product 4, 60"""
from io import StringIO
f = StringIO(txt)
df = pd.read_table(f,sep =',')
grouped = df.groupby(['code_desc']).agg({'product_id': pd.Series.nunique })
labels=grouped.index
print(labels)
输出:
Index(['Product 1', 'Product 2', 'Product 3', 'Product 4'], dtype='object', name='code_desc')