【发布时间】:2018-11-10 19:28:36
【问题描述】:
我有一个数据框,其中包含两个名为“DATE”(它是每月数据)和“ID”的索引以及一个名为 Volume 的列变量。现在我想对其进行迭代,并为每个唯一 ID 填充一个新列,其中包含新列中 Volume 列的平均值。
基本思想是找出每个 ID 的年平均月数以上的月份。
list(df.index)
(Timestamp('1970-09-30 00:00:00'), 12167.0)
print(df.index.name)
None
我似乎没有找到解决这个问题的教程:(
有人可以指点我正确的方向
SHRCD EXCHCD SICCD PRC VOL RET SHROUT \
DATE PERMNO
1970-08-31 10559.0 10.0 1.0 5311.0 35.000 1692.0 0.030657 12048.0
12626.0 10.0 1.0 5411.0 46.250 926.0 0.088235 6624.0
12749.0 11.0 1.0 5331.0 45.500 5632.0 0.126173 34685.0
13100.0 11.0 1.0 5311.0 22.000 1759.0 0.171242 15107.0
13653.0 10.0 1.0 5311.0 13.125 141.0 0.220930 1337.0
13936.0 11.0 1.0 2331.0 11.500 270.0 -0.053061 3942.0
14322.0 11.0 1.0 5311.0 64.750 6934.0 0.024409 154187.0
16969.0 10.0 1.0 5311.0 42.875 1069.0 0.186851 13828.0
17072.0 10.0 1.0 5311.0 14.750 777.0 0.026087 5415.0
17304.0 10.0 1.0 5311.0 24.875 1939.0 0.058511 8150.0
【问题讨论】:
-
非常感谢,问题是我不仅有groupby ID,还有'DATE'索引的年份。这意味着我必须以某种方式摆脱这一年:(
-
是否可以创建一些具有预期输出的示例数据?
-
我希望我做到了,例如,我只想为每个 PERMNO 做年度平均交易量,所以我需要访问 DATE 索引,但我不知道如何。
-
你觉得
df['avg'] = df.groupby([df.index.get_level_values(0).year, 'PERMNO'])['Volume'].transform('mean')吗? -
它不会抛出错误,所以我希望它有效。我只是想知道你是如何想出 index.get_level_values(0).year ..你能告诉我你是怎么发现的,这样我以后可以帮助自己吗?