gpt4 book ai didi

python - 根据 pandas 中的标准创建虚拟变量

转载 作者:行者123 更新时间:2023-12-01 02:32:04 24 4
gpt4 key购买 nike

我有一个像这样的数据框:

date           sales      company    country 
16/03/2012 3000 H&M US
13/04/2012 2300 H&M US
26/03/2012 1230 H&M FR
13/04/2012 1300 H&M FR
23/03/2012 2230 H&M IT
19/04/2012 1100 H&M IT
16/03/2012 3000 ABC US
13/04/2012 2300 ABC US
26/03/2012 100 ABC FR
13/04/2012 60 ABC FR
23/03/2012 435 ABC IT
19/04/2012 300 ABC IT

我想定义一个标准:如果一家公司的(平均)销售额来自单一国家/地区的比例低于 50%,则该公司被视为国际公司。我想创建一个新列,如果它是国际的,则取值 1,否则取值 0。最终输出应如下所示:

 date           sales      company    country   international
16/03/2012 3000 H&M US 1
13/04/2012 2300 H&M US 1
26/03/2012 1230 H&M FR 1
13/04/2012 1300 H&M FR 1
23/03/2012 2230 H&M IT 1
19/04/2012 1100 H&M IT 1
16/03/2012 3000 ABC US 0
13/04/2012 2300 ABC US 0
26/03/2012 100 ABC FR 0
13/04/2012 60 ABC FR 0
23/03/2012 435 ABC IT 0
19/04/2012 300 ABC IT 0

我怎样才能做到这一点?P.S:数据集中可能缺少销售值,我怎么能说忽略这些值呢?

最佳答案

使用transform对于方法,将它们进行比较,并使用聚合all进行分组,以检查所有值是否返回True:

s2 = df.groupby('company')['sales'].transform('mean') / 2
print (s2)
0 930.00
1 930.00
2 930.00
3 930.00
4 930.00
5 930.00
6 516.25
7 516.25
8 516.25
9 516.25
10 516.25
11 516.25
Name: sales, dtype: float64

s1 = df.groupby(['company', 'country'])['sales'].transform('mean')
print (s1)
0 2650.0
1 2650.0
2 1265.0
3 1265.0
4 1665.0
5 1665.0
6 2650.0
7 2650.0
8 80.0
9 80.0
10 367.5
11 367.5
Name: sales, dtype: float64
<小时/>
df['international'] = (s1 > s2).groupby(df['company']).transform('all').astype(int)
print (df)
date sales company country international
0 16/03/2012 3000 H&M US 1
1 13/04/2012 2300 H&M US 1
2 26/03/2012 1230 H&M FR 1
3 13/04/2012 1300 H&M FR 1
4 23/03/2012 2230 H&M IT 1
5 19/04/2012 1100 H&M IT 1
6 16/03/2012 3000 ABC US 0
7 13/04/2012 2300 ABC US 0
8 26/03/2012 100 ABC FR 0
9 13/04/2012 60 ABC FR 0
10 23/03/2012 435 ABC IT 0
11 19/04/2012 300 ABC IT 0

关于python - 根据 pandas 中的标准创建虚拟变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com