【发布时间】:2018-02-24 02:30:43
【问题描述】:
我有这个示例表:
ID Date Days Volume/Day
0 111 2016-01-01 20 50
1 111 2016-02-01 25 40
2 111 2016-03-01 31 35
3 111 2016-04-01 30 30
4 111 2016-05-01 31 25
5 111 2016-06-01 30 20
6 111 2016-07-01 31 20
7 111 2016-08-01 31 15
8 111 2016-09-01 29 15
9 111 2016-10-01 31 10
10 111 2016-11-01 29 5
11 111 2016-12-01 27 0
0 112 2016-01-01 31 55
1 112 2016-02-01 26 45
2 112 2016-03-01 31 40
3 112 2016-04-01 30 35
4 112 2016-04-01 31 30
5 112 2016-05-01 30 25
6 112 2016-06-01 31 25
7 112 2016-07-01 31 20
8 112 2016-08-01 30 20
9 112 2016-09-01 31 15
10 112 2016-11-01 29 10
11 112 2016-12-01 31 0
在按 ID 和日期分组后,我正试图使我的表最终表如下所示。
ID Date CumDays Volume/Day
0 111 2016-01-01 20 50
1 111 2016-02-01 45 40
2 111 2016-03-01 76 35
3 111 2016-04-01 106 30
4 111 2016-05-01 137 25
5 111 2016-06-01 167 20
6 111 2016-07-01 198 20
7 111 2016-08-01 229 15
8 111 2016-09-01 258 15
9 111 2016-10-01 289 10
10 111 2016-11-01 318 5
11 111 2016-12-01 345 0
0 112 2016-01-01 31 55
1 112 2016-02-01 57 45
2 112 2016-03-01 88 40
3 112 2016-04-01 118 35
4 112 2016-05-01 149 30
5 112 2016-06-01 179 25
6 112 2016-07-01 210 25
7 112 2016-08-01 241 20
8 112 2016-09-01 271 20
9 112 2016-10-01 302 15
10 112 2016-11-01 331 10
11 112 2016-12-01 362 0
接下来,我希望能够提取每个 ID 的 Volume/Day 的第一个值、所有 CumDays 值以及每个 ID 和 Date 的所有 Volume/Day 值。所以我可以使用它们进行进一步的计算和绘制 Volume/Day 与 CumDays 的关系。以 ID:111 为例,Volume/Day 的第一个值将仅为 50,而 ID:112 的第一个值将仅为 55。ID:111 的所有 CumDays 值将是 20,45... 和 ID:112,它将为 31,57...对于所有交易量/天 --- ID:111, 将是 50, 40... 而 ID:112 将是 55,45...
我的解决方案:
def get_time_rate(grp_df):
t = grp_df['Days'].cumsum()
r = grp_df['Volume/Day']
return t,r
vals = df.groupby(['ID','Date']).apply(get_time_rate)
vals
这样做,累积计算根本不生效。它返回原始的 Days 值。这不允许我进一步提取 Volume/Day 的第一个值、所有 CumDays 值和我需要的所有 Volume/Day 值。任何关于如何去做的建议或帮助将不胜感激。谢谢
【问题讨论】:
-
你为什么发布html?这是您接收数据的方式吗?
-
@piRSquared,没有。这是我组织的,所以它可以在 S.O. 上看到。除了以 html 形式表示或拍照之外,还有其他更好的方法可以在 S.O 上显示表格吗?
-
我们看到的只是原始的 HTML,除非我们点击运行 sn-p。相反,粘贴数据文本并突出显示该文本,然后单击类似于 {} 的按钮。这将使每行缩进四个空格。这反过来又以方便的方式展示您的餐桌,以便我们为您提供帮助
-
@piRSquared,非常感谢。想了想,我只能将该实用程序用于代码。做了一些更新。我想知道这现在看起来是否更好
-
看看那些漂亮的表格(-:除了接受@cᴏʟᴅsᴘᴇᴇᴅ 的答案之外,您可能还想考虑投票。
标签: python pandas matplotlib group-by pandas-groupby