首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两行中具有相同索引的值组合在一起

如何将两行中具有相同索引的值组合在一起
EN

Stack Overflow用户
提问于 2021-04-10 09:26:43
回答 1查看 66关注 0票数 0

我有一个数据帧,每两行具有相等的“时间”索引,两个“数据”列具有可能相等的值,value1仅包含正数,value2仅包含负值,以及一行与另一行不同的“类型”列:

代码语言:javascript
复制
time     type  value1 value2
01:26:00  A     1      -5
01:26:00  B     2      -6
01:28:35  A     3      -7
01:28:35  B     4      -8

我可以为文字或组合条形图绘制条形图(当我注释掉line#1时):

代码语言:javascript
复制
df = df.loc['type'] /line #1
df.plot(x='time', y=['value1', 'value2'], kind='bar', stacked=True)

我需要的是绘制条形图,时间在X轴上,A的value1和B的value1并排,对面是A的value2和B的value2,就像这样:

非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-12 04:32:08

这可以使用seaborn barplot函数来完成,该函数提供了方便的hue参数,使得并排显示A和B成为可能。在以下示例中,saturation参数用于区分value1和value2:

代码语言:javascript
复制
import io
import pandas as pd    # v 1.2.3
import seaborn as sns  # v 0.11.1

# Create sample dataset
data = """
time     type  value1 value2
01:26:00  A     1      -5
01:26:00  B     2      -6
01:28:35  A     3      -7
01:28:35  B     4      -8
"""
df = pd.read_csv(io.StringIO(data), delim_whitespace=True)

# Create bar chart
ax = sns.barplot(data=df, x='time', y='value1', hue='type', saturation=1, zorder=2)
sns.barplot(data=df, x='time', y='value2', hue='type', saturation=0.6, zorder=2, ax=ax)
ax.set_ylabel('value1 and value2', labelpad=10)

# Format chart
ax.grid(axis='y', linewidth=0.5, zorder=1)
ax.axhline(color='black', linewidth=1, alpha=0.3)
ax.tick_params(axis='both', which='major', length=0)
sns.despine(left=True, bottom=True)

# Edit legend
handles, labels = ax.get_legend_handles_labels()
ntypes = df['type'].nunique()
ax.legend(handles[:ntypes], labels[:ntypes], loc=(1.03, 0.5), frameon=False);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67030005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档