我有一个这样的数据框:
df = pd.DataFrame({'type':['emph','emph', 'tr', 'tf', 'jitt', 'loss'],
'result':[1,1,2,3,4,5]})
我希望groupby按类型列进行分组,但将tr和tf组合并为一个新的组trtf:
当我当然使用groupby(“ type”)进行分组时,我会得到分别用于tr和tf的组,而我看不到如何根据列变量名指定分组。
我不介意只要创建了新的TrTf组,Tr和Tf是否会保留在输出中。
谢谢
答案 0 :(得分:2)
编辑:一起为值组创建元组列表,然后用type
将字典和groupby
中的最后replace
列sum
与L = [('tr','tf'), ('a','b')]
d = {y:''.join(x) for x in L for y in x}
print (d)
{'tr': 'trtf', 'tf': 'trtf', 'a': 'ab', 'b': 'ab'}
df = df.groupby(df['type'].replace(d))['result'].sum().reset_index()
print (df)
type result
0 emph 2
1 jitt 4
2 loss 5
3 trtf 5
:
sum
如果可以按首字母分组,请将DataFrameGroupBy.agg
与join
和set
与df = (df.groupby(df['type'].str[0])
.agg({'result':'sum', 'type':lambda x: ''.join(set(x))})
.reset_index(drop=True))
print (df)
result type
0 2 A
1 5 B1B2
2 4 C
3 5 D
一起使用:
print (df['type'].str[0])
0 A
1 A
2 B
3 B
4 C
5 D
Name: type, dtype: object
详细信息:
document.querySelector