我有一个pandas数据框,我在一个特定列(“question_1”)上使用以下内容绘制条形图:
df1.question_1.value_counts().plot(kind='bar', rot=0)
这很有效。 value_counts()方法返回以下Series:
4 30
3 20
5 15
2 10
然后将第一列用作条形图的标签,而秒列则用作条形高度。
现在我有另一个数据帧df2,其中包含第一个数据帧df1的question_1列中的值的编码:
ID value
1 "test1"
2 "test2"
3 "test3"
4 "test4"
5 "test5"
现在我想将此编码用于value_counts()的结果:
"test4" 30
"test3" 20
"test5" 15
"test2" 10
最后,我的目标是用这些编码替换条形图的标签(即代替4,我希望将“test4”作为标签)。也许这也可以通过更简单的方式完成。
答案 0 :(得分:2)
IIUC,
您可以将由值计数产生的系列索引映射到新索引:
s是value_counts的结果:
s = pd.Series([30,20,15,10],index=[4,3,5,2])
并策划:
df2是您的“编码数据帧”:
df2 = pd.DataFrame({'ID':[1,2,3,4,5],'value':['test1','test2','test3','test4','test5']})
让我们使用:
将s.index映射到df2值s.index = s.index.to_series().map(df2.set_index('ID')['value'])
而且,现在就开始了。
s.plot(kind='bar', rot=0)
输出: