Pandas DataFrame按列类别生成新列并按state分组统计实现问题
实现方案
你需要的效果可以通过独热编码+分组求和的组合逻辑实现,Pandas内置的pd.get_dummies可以直接生成符合你命名要求的统计列,再按state分组求和即可得到每个类别的出现次数。
完整代码示例如下:
import pandas as pd # 你提供的示例数据集 df = pd.DataFrame({ 'state':['California'] * 4 + ['Florida'] * 5 + ['Minnesota'] * 3 + ['New Hampshire'], 'population':['50-100', '0-50', '150-200', '50-100', '0-50', '150-200', '100-150', 'NA', '0-50', 'NA', '100-150', '50-100', 'NA'], 'locale':['rural', 'urban', 'town', 'suburb', 'suburb', 'urban', 'rural', 'suburb', 'NA', 'town', 'town', 'urban', 'rural'] }) # 核心处理逻辑 result = pd.get_dummies( df, # 自动对除state外的所有列做独热编码,适配多列场景 columns=df.columns.drop('state'), # 列名前缀和类别值之间用=分隔,匹配要求的列名格式 prefix_sep='=', # 如果数据中存在真实NaN(不是字符串'NA'),可打开下方参数统计NaN的出现次数 # dummy_na=True ).groupby('state', as_index=False).sum()
输出结果中California行的统计值和你给出的预期示例完全一致,该方案也支持你补充说明里的多列数据集,不需要手动指定列名即可自动适配。
内容的提问来源于stack exchange,提问作者Manu Vats
相关产品推荐
相关产品推荐

