![](/img/trans.png)
[英]How to create a new column in a Pandas DataFrame based on a column in another DataFrame?
[英]How to create a Pandas dataframe from another column in a dataframe by splitting it?
我有以下源数据框
人 | 国家 | 有钱吗? |
---|---|---|
0 | 我们 | 是的 |
1 | 印度 | 不 |
2 | 印度 | 是的 |
3 | 我们 | 是的 |
4 | 我们 | 是的 |
5 | 印度 | 不 |
6 | 我们 | 不 |
7 | 印度 | 不 |
我需要将其转换为另一个数据框以绘制如下所示的条形图,以便轻松访问数据
要创建的数据框如下所示。
国家 | 富有的 | 较差的 |
---|---|---|
我们 | 3 | 1 |
印度 | 1 | 3 |
我是 Pandas 和探索性数据科学的新手。 请在这里帮忙
你可以试试pivot_table
df['Is Rich?'] = df['Is Rich?'].replace({'Yes': 'Rich', 'No': 'Poor'})
out = df.pivot_table(index='Country', columns='Is Rich?', values='Person', aggfunc='count')
print(out)
Is Rich? Poor Rich
Country
India 3 1
US 1 3
你可以这样做:
converted = df.assign(Rich=df['Is Rich?'].eq('Yes')).eval('Poor = ~Rich').groupby('Country').agg({'Rich': 'sum', 'Poor': 'sum'})
print(converted)
Rich Poor
Country
India 1 3
US 3 1
但是,如果要将其绘制为条形图,则以下格式可能最适合使用seaborn
类的绘图库:
plot_df = converted.reset_index().melt(id_vars='Country', value_name='No. of people', var_name='Status')
print(plot_df)
Country Status No. of people
0 India Rich 1
1 US Rich 3
2 India Poor 3
3 US Poor 1
然后,使用seaborn
:
import seaborn as sns
sns.barplot(x='Country', hue='Status', y='No. of people', data=plot_df)
结果图:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.