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
我想整理类似的组数据。这是我的数据框
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