社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python提供了如何组织类似的组数据

ByHala • 3 年前 • 1287 次点击  

我想组织类似的群体数据。这是我的数据框

  SKU
FATUT
GUYGE
FATUT-01
SUPAU
GUYPE
SUPAU-01 
FATUT-02
GUYGE-01 

我预期的数据帧如下所示:

     SKU
   FATUT
FATUT-01
FATUT-02
   GUYGE
GUYGE-01
   SUPAU
SUPAU-01
   GUYPE

我想按顺序组织类似的数据组。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133546
 
1287 次点击  
文章 [ 1 ]  |  最新文章 3 年前
enke
Reply   •   1 楼
enke    3 年前

一种选择是使用 groupby 使用参数 sort=False ; 然后连接拆分的数据帧。

工作原理:

  • df 在破折号前按绳子
  • 子句 默认情况下,按groupby键进行排序;当我们指定 sort=False ,我们确保密钥的存储顺序与第一次出现在中的顺序相同 df ,即“GUYPE”留在“SUPAU”后面。
  • 子句 对象包含有关组的信息,可以像字典一样解包。然后解包并构建一个生成器表达式,返回分组的数据帧。
  • 使用 concat ,将拆分的数据帧连接成一个;通过使用 ignore_index=True ,我们忽略来自拆分数据帧的索引,并重置索引。
out = pd.concat((d for _, d in df.groupby(df['SKU'].str.split('-').str[0], sort=False)), ignore_index=True)

输出:

        SKU
0     FATUT
1  FATUT-01
2  FATUT-02
3     GUYGE
4  GUYGE-01
5     SUPAU
6  SUPAU-01
7     GUYPE

但我觉得为了你的任务, sort_values 也可以工作,即使顺序与所需输出中的顺序不完全相同:

df = df.sort_values(by='SKU', ignore_index=True)

输出:

        SKU
0     FATUT
1  FATUT-01
2  FATUT-02
3     GUYGE
4  GUYGE-01
5     GUYPE
6     SUPAU
7  SUPAU-01