我每天有一列数值,每周有另一列数值。对于相应的公司和组,我想用每天的值除以该周的周值。我正试图找到一种没有循环的方法,我觉得在熊猫或纽姆里有一种方法可以做到这一点,但我想不出来。谢谢你的帮助!在
例如,我有两个数据帧:
df1=
Company Group Date People
A X 01/07/2015 5
A X 01/14/2015 10
A XX 01/07/2015 6
A XX 01/14/2015 12
B Y 01/07/2015 4
B Y 01/14/2015 8
B YY 01/07/2015 5
B YY 01/14/2015 4
df2=
^{pr2}$我希望结果是:
Company Group Date Value/People
A X 01/04/2015 1
A X 01/06/2015 2
A X 01/13/2015 1.5
A XX 01/05/2015 1
A XX 01/06/2015 1.5
A XX 01/11/2015 0.75
A XX 01/14/2015 1
B Y 01/05/2015 1
B Y 01/07/2015 1.5
B Y 01/13/2015 2
B Y 01/14/2015 3
B YY 01/03/2015 2
B YY 01/11/2015 2.5
B YY 01/14/2015 3
存储在DataFrames和Series中的类日期值的底层数据类型是NumPy^{} 。通过调用
astype('datetime64[?]')
,可以将datetime64[ns]
值的数组“裁剪”为标准的秒、分钟、小时、日、周、月或年,其中?
将替换为适当的单位(例如s
,m
,h
,D
,W
,M
,Y
)。在这里,如果我们能把每一天都归类到一个规范的星期,我们的问题就可以得到很大程度的解决。我们可以使用
.astype('datetime64[W]')
:对
df1
和df2
都做了这项工作,现在我们可以合并['Week', 'Group', 'Company']
上的数据帧。这将匹配df1和df2中的相应行。找到价值与人的比率就很容易了。^{pr2}$
收益率
请注意,在将日期裁剪为标准周时,需要考虑“基准偏移”问题。换句话说,你需要决定一周的开始时间。如果您不喜欢
df['Date'].values.astype('datetime64[W]')
所做的规范选择,则可能需要为日期添加偏移量。例如,要在df['Date']
中的日期中添加一天,可以使用:相关问题 更多 >
编程相关推荐