Pandas 对除选定行以外的所有行进行分组

Pandas 对除选定行以外的所有行进行分组,pandas,Pandas,我试图做一些选择分组和求和,但不断收到错误消息,显然这都是错误的。我想对所有行进行分组,除了少数行,然后对主组进行求和。基本上,我想做一个饼图,显示几个切片,主组为“其他”。提前谢谢 d = {'symbol': ['a', 'b', 'c', 'd', 'e', 'f', 'g'], 'value': [5, 5, 5, 5, 1, 1, 1]} df = pd.DataFrame(data=d) display(df) 输出: symbol value 0 a 5

我试图做一些选择分组和求和,但不断收到错误消息,显然这都是错误的。我想对所有行进行分组,除了少数行,然后对主组进行求和。基本上,我想做一个饼图,显示几个切片,主组为“其他”。提前谢谢

d = {'symbol': ['a', 'b', 'c', 'd', 'e', 'f', 'g'], 'value': [5, 5, 5, 5, 1, 1, 1]}
df = pd.DataFrame(data=d)
display(df)
输出:

    symbol  value
0   a       5
1   b       5
2   c       5
3   d       5
4   e       1
5   f       1
6   g       1
e        1
f        1
g        1
rest    20
Name: value, dtype: int64
预期结果:

    symbol  value
0   rest    20
4   e       1
5   f       1
6   g       1
这是一种正确的方法吗

def not_in_group(sym):
    if (sym != 'e' or sym != 'f' or sym != 'g' in df['symbol']):
        return sym
    
grouped = df.groupby(not_in_group, axis=1)('value').sum()
display(grouped)

您可以使用
isin
np。其中
映射符号:

mapped_symbols = np.where(df.symbol.isin(main_groups), df.symbol, 'rest')
df['value'].groupby(mapped_symbols).sum()
输出:

    symbol  value
0   a       5
1   b       5
2   c       5
3   d       5
4   e       1
5   f       1
6   g       1
e        1
f        1
g        1
rest    20
Name: value, dtype: int64