python - Pandas 按列和列变量分组

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

谢谢

最佳答案

编辑:为值组一起创建元组列表,然后是字典和最后一个 replace groupby 中的列 typesum:

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
<小时/>

如果可以按首字母分组,请使用 DataFrameGroupBy.aggsumjoinsets:

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

关于python - Pandas 按列和列变量分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54884591/

相关文章:

python - 在 Pandas 数据框列中添加多个常量值

python - 使用PIL或pillow绘制图像并用TKinter显示

python - pandas在Excel writer中设置单元格格式

python:从列表中找到字母表中丢失的字母 - 最少的代码行

python - 从数据框中删除控制字符空格

python - 选择 usecols 参数将 Excel 文件导入 Pandas 时出错

python - 如何从 Python 中的元组中的每个值中减一?

python - Scikit F 分数度量误差

python - Pandas : Replace NaNs with mean of 'n' nearest non-empty values in column

python - 将一个文件的代码应用到多个文件python(新手问题)