使用 sum 函数从 groupby 数据框中排除日期列
Posted
技术标签:
【中文标题】使用 sum 函数从 groupby 数据框中排除日期列【英文标题】:Exclude date column from groupby dataframe with sum function on it 【发布时间】:2019-06-12 14:54:00 【问题描述】:我有一个 df,我把它放到另一个数据框中,用 sum 函数,它排除了一些列,但是 date 对于进一步计算很重要
grdf = df.groupby(['Year', 'Month', 'Percentage']).sum()
grdf['Gross Sales'] = grdf['Gross Sales'].astype(float)
grdf['Sum'] = grdf['Gross Sales'].cumsum()
追加、合并、重新索引、掩码、融合、连接、相交、 you_name_it - 我的日期时间栏?
- Net Units Net Sales Gross Sales Sum Payout
Year Month Percentage
2017 11 70% 3 147.97 103.58 103.58 103.58
12 70% 1 24.99 17.49 121.07 17.49
2018 1 70% 2 49.98 34.99 156.06 34.99
2 70% 3 74.97 52.48 208.54 104.96
3 70% 1 24.99 17.49 226.03 17.49
4 70% 1 24.99 17.49 243.52 17.49
8 88% 2 89.98 79.18 322.71 114.17
9 88% 1 64.99 57.19 379.90 57.19
10 88% 3 104.97 92.37 472.27 149.56
11 88% 2 79.98 70.38 542.65 70.38
2019 1 88% 2 39.98 35.18 577.83 105.56
++++
Day Product Base Price Net Units Net Sales Gross Sales Percentage Year Month Payout Pay Day
0 2017-11-11 asdasdasdnts $69.99 1 69.99 48.9930 70% 2017 11 x x
1 2017-11-13 asdasdasdnts $69.99 1 69.99 48.9930 70% 2017 11 x x
2 2017-11-27 asdasdasdnts $7.99 1 7.99 5.5930 70% 2017 11 103.579 2018-01-11
3 2017-12-06 asdasdasdnts $24.99 1 24.99 17.4930 70% 2017 12 x x
4 2018-01-03 asdasdasdnts $24.99 1 24.99 17.4930 70% 2018 1 x x
5 2018-01-17 asdasdasdnts $24.99 1 24.99 17.4930 70% 2018 1 x x
6 2018-02-10 asdasdasdnts $24.99 1 24.99 17.4930 70% 2018 2 x x
7 2018-02-19 asdasdasdnts $24.99 1 24.99 17.4930 70% 2018 2 x x
8 2018-02-28 asdasdasdnts $24.99 1 24.99 17.4930 70% 2018 2 104.958 2018-04-14
9 2018-03-04 asdasdasdnts $24.99 1 24.99 17.4930 70% 2018 3 x x
10 2018-04-22 asdasdasdnts $24.99 1 24.99 17.4930 70% 2018 4 x x
11 2018-08-01 asdasdasdnts $24.99 1 24.99 21.9912 88% 2018 8 x x
12 2018-08-22 asdasdasdial $64.99 1 64.99 57.1912 88% 2018 8 176.789 2018-10-06
13 2018-09-19 asdasdasdial $64.99 1 64.99 57.1912 88% 2018 9 x x
14 2018-10-15 asdasdasdial $64.99 1 64.99 57.1912 88% 2018 10 114.382 2018-11-29
15 2018-10-23 asdasdasdnts $24.99 1 24.99 21.9912 88% 2018 10 x x
16 2018-10-26 asdasdasdock $14.99 1 14.99 13.1912 88% 2018 10 x x
17 2018-11-20 asdasdasdial $64.99 1 64.99 57.1912 88% 2018 11 x x
18 2018-11-20 asdasdasdock $14.99 1 14.99 13.1912 88% 2018 11 105.565 2019-01-04
19 2019-01-04 asdasdasdnts $24.99 1 24.99 21.9912 88% 2019 1 x x
20 2019-01-04 asdasdasdock $14.99 1 14.99 13.1912 88% 2019 1 x x
我按月分组,所以我的数据被求和,行数 - 不一样
【问题讨论】:
原始数据框是什么样的? 您能添加一个原始数据框的示例吗? @Ghorich - 更新! @Mr_Z - 更新! @jezrael - 不幸的是,我按月分组(所以我的数据被求和),行数 - 不一样 【参考方案1】:使用聚合:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.aggregate.html
In : df = pd.DataFrame([[1, 2, 3],
[4, 5, 6],
[1, 5, 7]],
columns=['A', 'B', 'C'])
In : df
Out:
A B C
0 1 2 3
1 4 5 6
2 1 5 7
In : df.groupby('A').agg('B':np.sum, 'C':'first')
Out:
B C
A
1 7 3
4 5 6
因此,您可以决定在每一列上使用哪个操作。您只需说出您对“日期”列的要求(首先可能没问题)。
【讨论】:
与'last'
- 工作完美!就像我想要的一样,谢谢你^___^以上是关于使用 sum 函数从 groupby 数据框中排除日期列的主要内容,如果未能解决你的问题,请参考以下文章
Pandas将groupby操作的结果保存为原始数据框中的新列[关闭]
根据 pandas 数据框中的条件将 value_counts 与 groupby 函数一起使用并插入新列
pandas编写自定义函数计算多个数据列的加和(sum)使用groupby函数和apply函数聚合计算分组内多个数据列的加和