基本上,我希望垃圾箱位于自己的一栏中,请参见代码和输出。 Python
graph_data = housing_data.groupby(['Date','Bins']).Price.mean()
graph_data
Date Bins
2016-01 (5, 10] NaN
(10, 15] 1.009000e+06
2016-03 (0, 5] 1.244532e+06
(5, 10] 1.221559e+06
(10, 15] 1.098541e+06
2016-04 (0, 5] 1.085015e+06
(5, 10] 1.086503e+06
(10, 15] 9.220241e+05
2016-05 (0, 5] 1.019418e+06
(5, 10] 1.139064e+06
(10, 15] 9.416809e+05
任何帮助将不胜感激。
答案 0 :(得分:0)
我认为您是在要求将数据重塑为所谓的宽格式数据。您当前拥有的是长格式数据。要在pandas
中的两个之间来回切换,请使用melt
和pivot
(或stack
和unstack
)。 (Check out this post或my more general post。)
我没有您的数据,但是请尝试
(housing_data.groupby(['Date', 'Bins'])
.agg({'Price': 'mean'})
.reset_index()
.pivot(index='Date', columns='Bins',
values='Price'))
(不幸的是,reset_index
行迫使熊猫在agg
命令之后再次将Date识别为列。)
如果要重命名垃圾箱,可以在groupby
调用之前使用rename
,但是如果仅使用pd.cut
创建自己的垃圾箱,则会更容易。这是使用iris
的示例:
import seaborn as sns
import pandas as pd
iris = sns.load_dataset('iris')
iris['bins'] = pd.cut(iris['sepal_length'],
bins=3,
labels=['lo', 'med', 'hi'])
(iris.groupby(['species', 'bins'])
.agg({'sepal_length': 'mean'})
.reset_index()
.pivot(index='species', columns='bins',
values='sepal_length'))
bins lo med hi
species
setosa 4.959574 5.733333 NaN
versicolor 5.281818 6.055556 6.900000
virginica 4.900000 6.265625 7.294118