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

Python DataFrame行列转换:将城市转列、投诉类型转行,求替代方法

其他实现方法

下面是几种能实现你需求的替代方案,核心都是将Complaint Type设为行、City设为列,基于Unique Key完成聚合统计:

1. 使用pivot方法

如果你的(Complaint Type, City)组合没有重复值(即每个投诉类型在单个城市下仅对应一条记录),可以直接用pivot,语法更简洁:

df_new = df.pivot(index='Complaint Type', columns='City', values='Unique Key')

要是存在重复组合,pivot无法直接指定聚合逻辑,这时候还是推荐用你原有的pivot_table或下面的方案。

2. 使用pd.crosstab

crosstab是Pandas专门用于生成交叉表的工具,默认会对分组后的记录计数。如果你需要统计各投诉类型在不同城市的投诉数量(用Unique Key的数量体现),可以这么写:

import pandas as pd
df_new = pd.crosstab(index=df['Complaint Type'], columns=df['City'], values=df['Unique Key'], aggfunc='count')

如果不需要计数,而是要保留Unique Key的其他聚合结果(比如取每组第一个值),把aggfunc换成对应函数即可,比如aggfunc='first'。

3. 使用groupby + unstack

先按行、列维度分组完成聚合,再用unstack把City从行索引展开为列:

# 以计数为例,可替换为你需要的聚合逻辑
df_new = df.groupby(['Complaint Type', 'City'])['Unique Key'].count().unstack('City')

如果要收集每组下所有的Unique Key,可以用agg(list):

df_new = df.groupby(['Complaint Type', 'City'])['Unique Key'].agg(list).unstack('City')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:27:39