首页 > 解决方案 > 从具有分类值的熊猫系列中获取总和

问题描述

我目前正在使用一个数据框,其中包含有关 T 恤的订单信息,其中我有一个如下所示的系列:

 '2 s',
 '1 s 2 l',
 '1 s 1 m',
 '1 m 1 l',
 '2 xl',
 '1 s',
 '1 m',
 '1 s',
 '1 m',
 '1 m',
 '1 m',
 '1 s 1 xl',
 '1xxl 1x 2xl',

这些数据点是手动输入的,我正在寻找一种方法来查找特定尺寸的项目总和,即。我想找到所有 s、所有 m 等的总和。 Atm 我有点不确定如何进行;我正在考虑拆分每个条目并进行一些编码,然后使用 groupbys。

标签: pythonpandas

解决方案


如果您有数据框:

          sizes
0           2 s
1       1 s 2 l
2       1 s 1 m
3       1 m 1 l
4          2 xl
5           1 s
6           1 m
7           1 s
8           1 m
9           1 m
10          1 m
11     1 s 1 xl
12  1xxl 1x 2xl

然后:

df = (
    df["sizes"]
    .str.extractall(r"(\d+)([\sa-z]+)")
    .reset_index(drop=True)
    .rename(columns={0: "count", 1: "size"})
)
df["size"] = df["size"].str.strip()
df["count"] = df["count"].astype(int)

print(df.pivot_table(columns="size", aggfunc="sum"))

印刷:

size   l  m  s  x  xl  xxl
count  3  6  7  1   5    1

推荐阅读