2
第一事件的第n天,我有以下的数据帧,从我的原始数据帧子集,与列事件,unixtime和天,我想补充另一列arbday这是自第一事件,对第n天(与第一次访问是1天):计算从熊猫
import numpy as np
import datetime as dt
>>> testdf = pd.DataFrame({'event': range(1,4), 'unixtime': [1346617885925, 1346961625305,1347214217566]},index=[343352,343353,343354])
>>> testdf['day'] = testdf['unixtime'].apply(lambda x: dt.datetime.utcfromtimestamp(x/1000).date())
event unixtime day arbday
343352 1 1346617885925 2012-09-02 1
343353 2 1346961625305 2012-09-06 5
343354 3 1347214217566 2012-09-09 8
环顾四周后,我试着这样做:
>>> testdf2['arbday'] = np.where(testdf2['event']==1, 1, testdf2.day.apply(lambda x: x-x[:1]))
event unixtime day arbday
343352 1 1346617885925 2012-09-02 1
343353 2 1346961625305 2012-09-06 NaN
343354 3 1347214217566 2012-09-09 NaN
or
>>> testdf2['arbday'] = np.where(testdf2['event']==1, 1, testdf2.day.apply(lambda x: dt.timedelta(x-x[:1])))
TypeError: 'datetime.date' object is not subscriptable
这样做的正确方法是什么?任何指针非常感谢!
编辑:关于在组上应用这个问题的后续问题是here。
您好,感谢您的回答。但是,它不适用于我的数据框,可能是因为它不是列_day_不是日期时间对象(尽管我认为它应该是)。请参阅上面的编辑。 –
Hello @root,再次感谢您的更新。我得到它在上面的虚拟数据框上工作,索引为0,1,2。但是,在我的实际数据框中,它不起作用,这是因为'df.get_value(index,col)'为第一个参数提供索引。它在dummy数据框上工作的原因是''event'== 1'在逻辑上是False,Python将False与0关联,因此在这种情况下返回索引[0]。如果将其更改为“event”=='event''(逻辑上为True),则返回第二天_datetime.date(2012,9,6)_。我现在试图找到一种方式来返回访问索引1. –
@根,我已经更新了这个问题。 –