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

使用groupby()处理爆炸后的Pandas DataFrame出现重复分组问题

问题原因与解决方法

问题原因

  • 字符串空格未处理:原数据集的country列中,多国家是用, (逗号+空格)分隔的,你用str.split(',')分割后,部分国家字符串前面会残留空格(比如" United States"),这些带空格的字符串会和无空格的("United States")被视为不同的分组键,导致groupby后同一国家出现多条记录。
  • 数据引用逻辑不严谨:在assign方法中你使用了原始的df['country'],但前面已经过滤得到了df_no_nan_country,这里应该用过滤后的列,虽然这个问题不一定直接导致重复,但会让代码逻辑存在隐患。

解决方法

针对上述问题,给出两种可行的修正方案:

方案1:分割时直接处理分隔符

直接用, (逗号+空格)作为分隔符分割,避免产生带空格的字符串:

import pandas as pd
df = pd.read_csv('netflix_titles.csv')
df['count'] = 1
df_no_nan_country = df[df['country'].notna()]
# 用逗号+空格分割,同时使用过滤后的DataFrame的country列
df_split_countries = df_no_nan_country.assign(country=df_no_nan_country['country'].str.split(', ')).explode('country')
# 按国家分组求和
country_counts = df_split_countries.groupby('country')['count'].sum()
# 筛选数量>100的结果并排序
df_split_countries_max = country_counts[country_counts > 100].sort_values(ascending=False).head(30)
print(df_split_countries_max)

方案2:分割后统一去除空格

如果不确定分隔符是否始终是逗号+空格,可以先分割再用str.strip()去除所有字符串的前后空格:

import pandas as pd
df = pd.read_csv('netflix_titles.csv')
df['count'] = 1
df_no_nan_country = df[df['country'].notna()]
# 先按逗号分割,再展开
df_split_countries = df_no_nan_country.assign(country=df_no_nan_country['country'].str.split(',')).explode('country')
# 去除每个国家字符串的前后空格
df_split_countries['country'] = df_split_countries['country'].str.strip()
# 分组求和与筛选
country_counts = df_split_countries.groupby('country')['count'].sum()
df_split_countries_max = country_counts[country_counts > 100].sort_values(ascending=False).head(30)
print(df_split_countries_max)

内容的提问来源于stack exchange,提问作者athanasios kwn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:35:24