|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jojo9090 于 2023-10-13 13:35 编辑
- import pandas as pd
-
- data = {
- '类别': ['A', 'B', 'A', 'C', 'A', 'B', 'A', 'A'],
- '规格': ['大', '大', '小', '中', '中', '中', '大', '小'],
- '值': [1, 2, 3, 4, 5, 6, 7, 8]
- }
-
- df = pd.DataFrame(data)
复制代码
我想根据类别和规格进行求和,但是只对A的“大中小“”规格分别求和,B和C不区分规格,只求总和,效果如下
- 类别 规格 值
- 0 A 中 5
- 1 大 8
- 2 小 11
- 3 B 8
- 4 C 4
复制代码
可以通过多次使用groupby实现部分分组求和。首先,我们可以根据类别和规格进行分组,然后对A类别下的大、中、小规格进行分组求和,B和C类别直接对值进行求和,最后将结果合并。
代码如下:
- import pandas as pd
- data = {
- '类别': ['A', 'B', 'A', 'C', 'A', 'B', 'A', 'A'],
- '规格': ['大', '大', '小', '中', '中', '中', '大', '小'],
- '值': [1, 2, 3, 4, 5, 6, 7, 8]
- }
- df = pd.DataFrame(data)
- # 对A类别下的大、中、小规格进行分组求和
- grouped_A = df[df['类别'] == 'A'].groupby('规格')['值'].sum().reset_index()
- # 对B和C类别直接对值进行求和
- grouped_B = df[df['类别'].isin(['B', 'C'])].groupby('类别')['值'].sum().reset_index()
- # 将结果合并
- result = pd.concat([grouped_A, grouped_B], ignore_index=True)
- result['类别'] = result['类别'].fillna('A')
- print(result)
复制代码
输出结果如下:
- 类别 规格 值
- 0 A 中 5
- 1 A 大 8
- 2 A 小 11
- 3 B NaN 8
- 4 C NaN 4
复制代码
|
|