我有一个这样的数据框

week co_week Revenue Country
19/09/2021 01/10/2021 120 US
19/09/2021 03/10/2021 120 US
19/09/2021 03/10/2021 120 FR
20/09/2021 05/10/2021 15 US
20/09/2021 06/10/2021 34 FR

现在我想要获得每个唯一周日期的收入总和,因此输出应该如下所示

week co_week Revenue Total_revenue Country
19/09/2021 01/10/2021 120 135 US
19/09/2021 03/10/2021 120 135 US
19/09/2021 03/10/2021 120 154 FR
20/09/2021 05/10/2021 15 135 US
20/09/2021 06/10/2021 34 154 FR

我try 使用以下代码,但由于删除了大多数索引,我在新列中以许多Null值结束!

df['Total_revenue'] = df.drop_duplicates(['Revenue']).groupby(df['Country'])['Total_spend'].transform('sum')

推荐答案

IIUC,您可能想要在groupby:

df['Total_revenue'] = (df.groupby('Country')['Revenue']
                         .transform(lambda x: x.drop_duplicates().sum())
                       )

但如果你在不同的by chance周有几倍于相同收入的收入,这可能是有偏见的.

最好使用mask来隐藏重复的值,然后使用groupby.transform('sum'):

df['Total_revenue'] = (df['Revenue']
                       .mask(df.duplicated(['week', 'Country']))
                       .groupby(df['Country']).transform('sum')
                       )

输出:

         week     co_week  Revenue Country  Total_revenue
0  19/09/2021  01/10/2021      120      US            135
1  19/09/2021  03/10/2021      120      US            135
2  19/09/2021  03/10/2021      120      FR            154
3  20/09/2021  05/10/2021       15      US            135
4  20/09/2021  06/10/2021       34      FR            154

Python相关问答推荐

为什么自定义pytree aux_data对于jnp.数组来说在.jit()之后跟踪,而对于np.数组来说则不是?

使用Python从HTTP打印值

有什么方法可以修复奇怪的y轴Python matplotlib图吗?

使用Python进行网页抓取,没有页面

Flask主机持续 bootstrap 本地IP| Python

Numpy索引argsorted使用integer数组,同时保留排序顺序

如何使用bs 4从元素中提取文本

如何将桌子刮成带有Se的筷子/要求/Beautiful Soup ?

按照行主要蛇扫描顺序对点列表进行排序

从包含数字和单词的文件中读取和获取数据集

Pandas :多索引组

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

@Property方法上的inspect.getmembers出现意外行为,引发异常

为什么带有dropna=False的groupby会阻止后续的MultiIndex.dropna()工作?

C#使用程序从Python中执行Exec文件

如果条件不满足,我如何获得掩码的第一个索引并获得None?

Python Pandas获取层次路径直到顶层管理

使用Python从rotowire中抓取MLB每日阵容

Polars将相同的自定义函数应用于组中的多个列,

人口全部乱序 - Python—Matplotlib—映射