Python:Pandas Groupby后DataFrame列标题显示异常问题
解决方法:GroupBy后自定义聚合列名
没问题!这在pandas分组聚合里是个很常见的小需求,我给你几个简单直接的解决办法,帮你去掉列名里的amin字样,得到想要的表格样式:
方法1:聚合时直接指定列名(最推荐)
用agg()方法,通过键值对的形式直接定义你想要的列名和对应的聚合函数,一步到位:
# 替换成你的DataFrame名称 result = df.groupby('EVENTID')['DTIN'].agg(Min_DTIN='min')
- 这里
Min_DTIN就是你想要的新列名,你可以改成任意名字(比如保留原列名DTIN也可以) - 如果希望
EVENTID作为普通列而不是索引,加上reset_index()即可:
result = df.groupby('EVENTID')['DTIN'].agg(Min_DTIN='min').reset_index()
示例输出(假设原数据包含EVENTID A/B):
EVENTID Min_DTIN 0 A 2023-01-01 1 B 2023-02-01
方法2:先聚合再重命名列
如果已经得到了带amin后缀的结果,直接用rename()方法修改列名:
# 先执行聚合(假设你的原代码得到的列名是'DTIN'或'DTIN_amin') result = df.groupby('EVENTID')['DTIN'].min().reset_index() # 重命名列,把旧列名改成你想要的名字 result = result.rename(columns={'DTIN': 'Min_DTIN'}) # 如果列名是'DTIN_amin',就改成:columns={'DTIN_amin': 'Min_DTIN'}
方法3:直接修改列名列表
这种方法更直接,适合已经拿到结果后快速调整:
result = df.groupby('EVENTID')['DTIN'].min().reset_index() # 直接指定新的列名列表 result.columns = ['EVENTID', 'Min_DTIN']
小提示
- 如果你只是想保留原列名
DTIN,方法1里直接写成agg(DTIN='min')就可以,这样输出的列名还是DTIN,不会带任何后缀 - 尽量避免用
amin()方法直接聚合(除非你明确需要),因为它在某些场景下会自动生成带后缀的列名,不如agg()灵活
内容的提问来源于stack exchange,提问作者PineNuts0
相关产品推荐
相关产品推荐

