python数据分析-分组把DataFrame列转行

在遇到需要将DataFrame中某列数据依据另一列进行分组转行的问题时,本文提供了一种解决方案。首先展示原始数据,然后详细解释了解决思路,包括计算最大列数、循环处理数据和填充空值,最终实现按组转换数据行。提供的代码适用于6000+条数据,但针对大数据量的优化尚未进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:遇到了一个问题是需要根据DataFrame中的某一列把对应另一列的数据由列转为行。

一、数据展示
a = pd.DataFrame({
   
   'name1':['a','a','b','c','b','a','b','a','c','c'],
                  'name2':['张三','张三','张三','李四','李四','李四','王五','王五','王五','王五']})
display(a)

在这里插入图片描述
目标样式:
在这里插入图片描述

二、解决思路

1、先计算出应该创建最长是多少列,比如举例数据a分组有4个元素b、c分组有三个元素,则按照最大的值创建列数然后不够长的分组用空值填充,并创建新的DataFrame为下面的循环准备。

group_name = 'name1' #用于分组的列名
trans_name = 'name2' #要变为横向的列名
#对要用于分组的数据做排序,目的是可以先查看数据
aa = aa.sort_values(by='%s' %group_name,ascending=True).reset_index(drop=True)
# 取出要转为行的列,并存为DF备用
bb = pd.DataFrame({
   
   group_name:aa[group_name],trans_name:aa[trans_name]})
cc = pd.DataFrame({
   
   group_name:aa[group_name],trans_name+'_count':aa[trans_name]})
#取出每个id应该被创建几次(即:应该创建的最长是几列)
ee = cc.groupby([group_name],sort=False,as_index=False).count()
a = list(ee[trans_name+'_count'])
#找出id重复最多的次数,即:应该创建多少列
b = a.copy()
b.sort()
print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值