我试图仅在下面的dataframe中的日期时间单元格上应用时间折扣函数。第一列有一个用户ID,分散在其余的数据中,是熊猫的日期、时间条目。

我想要使用的时间折扣函数依赖于dataframe中的元素与其他时间之间的时间增量。如果t是time t=g.ix[11:,6],那么h是一些time_deltas h=t-g[g.ix[:,1:]!=0]的数据格式,如下所示。

可以应用这个函数吗?
def calc_time_discount(t_delta):
t_delta=t_delta.days
if t_delta <= 14:
d=18.375/(t_delta-24.5)+1.75
else:
d=0
return d对于h,所有的日期时间条目(而不是将np.nans本身更改为日期本身)都会产生一个折扣因子(它恰好是介于1到0之间的一个值),我可以将它存储在与h(或g)相同大小的新数据中?
在20+堆栈溢出问题中,我已经看过的主题中没有提到如何将函数应用到dataframe的某些元素。
优步简单代码共享
这是一个用于加载的带有函数和g.pkl的zip (我保证它中没有任何病毒)。
发布于 2016-07-12 19:47:30
您应该尝试只将函数应用于非空元素,如下所示:
h.apply(lambda x: my_func(x) if(np.all(pd.notnull(x[1]))) else x, axis = 1)发布于 2016-07-12 15:56:22
这是熊猫函数notnull,对我的一个表进行非零检查。表bookdates_charge1_df由两列组成:BookDate和Charge1。
我将表赋值给自己,但只在检查了“Charge1`1”的元素“非空”之后。
回忆一下'Charge1‘是一个系列(一维数组,例如单列)。因此,必须应用这一功能。
bookdates_charge1_df = bookdates_charge1_df[
bookdates_charge1_df.Charge1.notnull()
]如果你想做
bookdates_charge1_df = bookdates_charge1_df[
'Charge1'.notnull()
]解释器会抱怨字符串没有属性'notnull‘。因为它没有。(我不知道你尝试了什么,但我只是加上这个,以防你尝试过。下一次,请添加您尝试过的!)
https://stackoverflow.com/questions/34893080
复制相似问题