我想再次将来自df.groupby的分组数据分组。在数据框上,我通过对语言列进行计数来对语言列进行分组。下面是我的代码:
grouped = df_covid_qua.groupby('LANG')['ID'].count()
grouped
数据可以正常工作。以下是其输出:
LANG
ar 2
en 631
es 10
et 1
fr 8
hi 22
in 5
it 1
ja 1
kn 5
ko 3
mr 1
nl 1
pa 1
ta 3
te 1
th 2
tl 1
tr 2
uk 1
und 31
ur 6
我将以上数据用于条形图。我的问题是,语言类别过多,因此我决定根据其输出再次对类别进行分组。我的预期输出是这样的:
LANG
en 631
und 31
hi 22
es 10
fr 8
LANG A 5
LANG B 3
LANG C 2
LANG D 1
类别LANG A,B,C和D是我要分组的语言,因为它们具有与较早的groupby数据相似的计数值。我研究了小组申请和合并的技巧,但不确定是否适用于我的问题。
我真的是Python新手,可以提供任何帮助。谢谢!
答案 0 :(得分:0)
使用:
s = df_covid_qua.groupby('LANG')['ID'].count()
#first sort output
s = s.sort_values(ascending=False)
#specify how many last unique values is replaced
N = 4
#remove duplicates and get last smallest values with swap order of values
v = s.drop_duplicates().nsmallest(N).iloc[::-1]
#generate LANG A,B,C dynalically by length
import string
a = string.ascii_uppercase
d = {y: f'LANG {x}' for x, y in zip(a, v)}
print (d)
#create new Series with map by langs
new = pd.Series(v.to_numpy(), index=v.map(d))
#filter values out of smallest and join new Series
out = pd.concat([s[~s.isin(v)], new])
print (out)
en 631
und 31
hi 22
es 10
fr 8
ur 6
LANG A 5
LANG B 3
LANG C 2
LANG D 1
dtype: int64