按列和列变量分组

2024-05-13 02:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

df = pd.DataFrame({'type':['emph','emph', 'tr', 'tf', 'jitt', 'loss'],
                   'result':[1,1,2,3,4,5]})

我希望groupby按type列分组,但将tr和tf组合并到一个新组trtf中:

当我使用groupby(“type”)时,当然会得到tr和tf的单独组,我看不到如何基于列变量名指定分组。你知道吗

我不介意Tr和Tf在输出中保留,只要创建一个新的TrTf组。你知道吗

谢谢


Tags: 数据dataframedftftyperesulttrpd
1条回答
网友
1楼 · 发布于 2024-05-13 02:26:35

编辑:为值组一起创建元组列表,然后使用sum创建字典和groupby中的最后一列^{}

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以及joinsets:

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

相关问题 更多 >