【问题标题】:How to group condition into "Other" category如何将条件分组到“其他”类别
【发布时间】:2021-10-10 06:08:51
【问题描述】:
我有一个用条形图表示的数据框(下图)
我想将一些带有 (Numbers
条形图:
数据:
Numbers
Target A 34
Target B 22
Target C 13
Target P 13
Target D 7
Target E 6
Target F 4
Target G 2
Target H 2
Target I 1
Target J 1
Target K 1
Target L 1
Target M 1
Target N 1
Target O 1
【问题讨论】:
标签:
python-3.x
pandas
matplotlib
charts
【解决方案1】:
这应该可行,您可能需要重置索引,只需将 Labels 替换为您的列名即可。
# values under threshold
other = df.loc[df['Numbers'] < 5]['Numbers'].sum()
new_row = {'Labels': 'Other', 'values': other}
df[df['Numbers'] >= 5].append(new_row, -1)
【解决方案2】:
将索引重置为Target formation 列。然后对于 Numbers < 5 所在的行,将其 Target formation 更改为“其他”:
df = df.rename_axis('Target formation').reset_index()
df.loc[df.Numbers < 5, 'Target formation'] = 'Other'
# Target formation Numbers
# 0 Target A 34
# 1 Target B 22
# 2 Target C 13
# 3 Target P 13
# 4 Target D 7
# 5 Target E 6
# 6 Other 4
# 7 Other 2
# 8 Other 2
# 9 Other 1
# 10 Other 1
# 11 Other 1
# 12 Other 1
# 13 Other 1
# 14 Other 1
# 15 Other 1
然后使用groupby.sum 将“其他”聚合为一个条目:
(df.groupby('Target formation').Numbers
.sum().sort_values(ascending=False)
.plot.barh())