gpt4 book ai didi

python - 如何在单行 python pandas 代码中应用 2 个不同的条件?

转载 作者:行者123 更新时间:2023-11-28 22:25:13 25 4
gpt4 key购买 nike

根据下表:

FamilyVsWWTotal = pd.DataFrame({'date':['2011-4-3','2011-3-5','2011-4-3','2011-5-7'], 'Country':['USA','CAN','USA','MEX'],'Revenues':[1200,1800,1000,800],'Customer':['Exxon','Google','Google','Microsoft']})

FamilyVsWWTotal = FamilyVsWWTotal.loc[FamilyVsWWTotal['Customer'] == 'Google']
FamilyVsWWTotal['total1'] = FamilyVsWWTotal.groupby(['date','Country'])['Revenues']\
.transform('sum')

FamilyVsWWTotal['total1'] 是创建的新列。那么,如何将上面的代码组合成一行代码呢?

最佳答案

我认为您需要先过滤,然后再将输出添加到过滤列:

m = FamilyVsWWTotal['Customer'] == 'Google'

FamilyVsWWTotal.loc[m, 'total1']=FamilyVsWWTotal[m].groupby(['date','Country'])['Revenues']\
.transform('sum')

print (FamilyVsWWTotal)
Country Customer Revenues date total1
0 USA Exxon 1200 2011-4-3 NaN
1 CAN Google 1800 2011-3-5 1800.0
2 USA Google 1000 2011-4-3 1000.0
3 MEX Microsoft 800 2011-5-7 NaN

对于单行解决方案:

FamilyVsWWTotal.loc[FamilyVsWWTotal['Customer'] == 'Google', 'total1'] = \
FamilyVsWWTotal[FamilyVsWWTotal['Customer']=='Google'].groupby(['date','Country'])['Revenues']\
.transform('sum')

print (FamilyVsWWTotal)
Country Customer Revenues date total1
0 USA Exxon 1200 2011-4-3 NaN
1 CAN Google 1800 2011-3-5 1800.0
2 USA Google 1000 2011-4-3 1000.0
3 MEX Microsoft 800 2011-5-7 NaN

关于python - 如何在单行 python pandas 代码中应用 2 个不同的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45667307/

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