Py学习  »  Python

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

ByHala • 3 年前 • 1312 次点击  

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

  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
 
1312 次点击  
文章 [ 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