Python 3.x 数据帧分组由一列中的多个字符串组成
下面是一些示例数据集Python 3.x 数据帧分组由一列中的多个字符串组成,python-3.x,dataframe,sum,pandas-groupby,Python 3.x,Dataframe,Sum,Pandas Groupby,下面是一些示例数据集 Name Year Item sales_Amount1 A1 1.2019 Badam 2 A1.pre 1.2019 Badam 10 A1.post 1.2019 carrot 8 N1 1.2019 carrot 10 A2 1.2019 Badam 10
Name Year Item sales_Amount1
A1 1.2019 Badam 2
A1.pre 1.2019 Badam 10
A1.post 1.2019 carrot 8
N1 1.2019 carrot 10
A2 1.2019 Badam 10
G 1.2019 Badam 20
A3 2.2019 soap 3
P 2.2019 soap 1
我做了如下的基本分组
sum_sales1 = df1.groupby(['Name','Year', 'Item']).agg({'sales_Amount1': 'sum'})
有没有一种方法可以通过特殊的刺来分组,比如。。。A1、A1.pre、A1.post和N1应分组在一起。
另一组是A2和G。另一组是A3和P。在“名称”列上有大约15条组合字符串的规则。是否可以按列名上的字符串对它们进行排序?谢谢
G1 = A1, A1.pre, A1.post and N1
G2 = A2 and G
G3 = A3 and P
Name Year Item sales_Amount1
G1 1.2019 Badam 12
G1 1.2019 carrot 18
G2 1.2019 Badam 30
G3 1.2019 soap 4
您可以编写一个自定义函数来应用Name->Group的映射
def map_组(名称):
如果名称出现在(“A1”、“A1.前”、“A1.后”、“N1”):
返回“G1”
如果名称出现在(“A2”、“G”):
返回“G2”
如果名称出现在(“A3”、“P”):
返回“G3”
sum_sales1=(df1.assign(Name=df1[“Name”]。apply(映射组))
.groupby(['Name','Year','Item']))
.agg({'sales_Amount1':'sum'))
.reset_index())
销售总额1
出[2]:
名称年份项目销售金额1
0 G1 1.2019巴丹12
1 G1 1.2019胡萝卜18
2 G2 1.2019巴丹30
3 G3 2.4