python - 使用 2 个 pandas 列作为 np.timedelta 的参数

标签 python numpy pandas apply

简单问题:

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 列来获取具有时间增量的结果系列:

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]))

最佳答案

所以你的代码对我有用。

df = pd.DataFrame({'value':[4,4,4],'unit':['D','W','Y']})
df.apply(f, axis=1)
0     4 days
1    4 weeks
2    4 years
dtype: object

这是我的版本:

numpy.__version__
'1.8.0'
pandas.__version__
'0.13.0rc1-32-g81053f9'

我确实注意到一个可能与您的问题相关的错误。您可以检查是否有 numpy 1.7,如果有,请升级到 1.8,看看是否可以解决问题。祝你好运:)

https://github.com/pydata/pandas/issues/5689

关于python - 使用 2 个 pandas 列作为 np.timedelta 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21035837/

相关文章:

python - 如何使用 Google calendar api python 查找两个事件之间的时差

python - Pandas:将一行 boolean 值附加到 df 使用 `loc` 更改为 `int`

python - 数组的精确直方图

python - 无法打开编解码器 'libopenh264' : Unspecified error

Python:将列表分配给多维数组元素

python-3.x - 将一个 DF 的某些特征应用于另一个 DF

python - 仅在数据框的一部分上显示热图?

python - 将数据帧转换为 numpy 数组时如何保持数据类型?

python - Python 2.x 中两个图像的直方图匹配?

python-3.x - TypeError:fit()缺少1个必需的位置参数: 'y'