pythonpandas如何组织相似的组数据

python pandas how to organize similar group data

我想整理类似的组数据。这是我的数据框

  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

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

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

工作原理:

  • 按破折号前的字符串对 df 进行分组
  • groupby 默认按groupby键排序;当我们指定 sort=False 时,我们确保键的存储顺序与它们在 df 中首次出现的顺序相同,即“GUYPE”位于“SUPAU”之后。
  • groupby 对象包含有关可以像字典一样解包的组的信息。然后解压它并构建一个生成器表达式,该表达式 returns 分组的数据帧。
  • 使用concat,将拆分后的DataFrames拼接成一个;通过使用 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