熊猫按列和列变量分组

时间:2019-02-26 11:33:28

标签: python pandas

我有一个这样的数据框:

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是否会保留在输出中。

谢谢

1 个答案:

答案 0 :(得分:2)

编辑:一起为值组创建元组列表,然后用type将字典和groupby中的最后replacesumL = [('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.aggjoinsetdf = (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