【发布时间】:2014-01-10 03:41:59
【问题描述】:
简单的问题:
In [1]:
df = DataFrame({'value':[4,4,4],'unit':['D','W','Y']})
df
Out[1]:
unit value
0 D 4
1 W 4
2 Y 4
我可以通过这种方式创建时间增量(当然):
In [2]:
timedelta64(4, 'D')
Out[2]:
numpy.timedelta64(4,'D')
但我无法遍历 DataFrame 列以获得具有 timedeltas 的结果系列:
def f(x):
return timedelta64(x['value'], x['unit'])
df.apply(f, axis=1)
相反,我得到:
TypeError: don't know how to convert scalar number to float
编辑:
这也不起作用,并返回相同的错误:
df['arg'] = zip(df.value, df.unit)
df.arg.apply(lambda x: timedelta64(x[0], x[1]))
【问题讨论】:
-
您的
pandas和numpy版本是什么?你的代码对我来说似乎工作正常。 -
@TomAugspurger pandas
0.12.0, numpy1.8.0