You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas按ISIN分组求和时如何保留首个非唯一的Name字段值

实现方法

你可以在groupby聚合时为不同列指定不同的聚合规则,Name和Sector取分组内首个值用first,Value求和用sum即可,完整代码如下:

import pandas as pd

# 原始DataFrame
df = pd.DataFrame({'ISIN': ['A1kT23', 'A1kT23', 'B333', '49O33'],
                   'Name': ['Example A', 'Name Xy', 'Example B', 'Test123'],
                   'Sector': ['Energy', 'Energy', 'Utilities', 'Real Estate'],
                   'Value': [100, 50, 7, 23]})

# 按ISIN分组聚合
res_df = df.groupby('ISIN', as_index=False).agg(
    Name = ('Name', 'first'),
    Sector = ('Sector', 'first'),
    Value = ('Value', 'sum')
)

# 输出查看结果
print(res_df)

运行后输出结果和你要求的完全一致:

ISIN       Name       Sector  Value
0  A1kT23  Example A       Energy    150
1    B333  Example B    Utilities      7
2   49O33    Test123  Real Estate     23

如果需要确保取的首个值符合业务顺序,可在分组前先对原始DataFrame按指定字段排序:

# 示例:先按ISIN、自定义排序字段升序排列,保证分组取到的first值符合预期
df = df.sort_values(by=['ISIN', '你的排序字段'], ascending=True)

内容的提问来源于stack exchange,提问作者Economist Learning Python

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 19:00:01