python - 解决pd.to_timedelta计算失败问题

标签 python pandas

我之前曾成功使用过以下条件语句

for RxDat in df2:

       condition = (df['Tdate'] > RxDat - pd.to_timedelta(46, unit="D")) & (df['Tdate'] < RxDat)

现在我收到以下错误

TypeError: unsupported operand type(s) for -: 'str' and 'Timedelta'

我提取了以下数据来说明错误

df['Tdate'] 包含

[Timestamp('2004-08-25 00:00:00'), Timestamp('2004-10-13 00:00:00'), Timestamp('2004-12-13 00:00:00'), Timestamp('2005-02-21 00:00:00'), Timestamp('2005-04-28 00:00:00'), Timestamp('2005-08-24 00:00:00')]

df2['RxDate'] 包含

[Timestamp('2004-08-20 00:00:00'), Timestamp('2004-08-23 00:00:00'), Timestamp('2004-08-18 00:00:00'), Timestamp('2004-08-15 00:00:00'), Timestamp('2004-08-12 00:00:00'), Timestamp('2004-08-13 00:00:00')]

我尝试通过几种方式查看此问题,但不明白为什么会出现错误?

最佳答案

如果按 d2 循环,则 RxDat 是列名称:

for RxDat in df2:

用途:

for RxDat in df2['RxDate']:

带有广播的非循环解决方案,输出是二维numpy数组:

a = df['Tdate'].to_numpy()[:, None]
b = df2['RxDate'].sub(pd.to_timedelta(46, unit="D")).to_numpy()
c = df2['RxDate'].to_numpy()
              
condition = (a > b) & (a < c)

关于python - 解决pd.to_timedelta计算失败问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75681010/

相关文章:

python - 重新格式化 pandas 数据框

python - Pandas pytable : how to specify min_itemsize of the elements of a MultiIndex

python - 使用 Mathematica 和 Python 创建图形

python - Google App Engine 413 错误(请求实体太大)

python - Django:读取多值 POST 变量时出现问题

python - 如何将第一列定义为 pd.read_csv 中的名称

python-3.x - Bokeh Legend 对象 - 将指定的颜色传递给图例

python - 在python中将数据文件读取到多维数组中

python - 在 HoloViews 中设置组合图的边界或范围

python - 使用 xlrd 引擎在 xls 文件上调用 pands read_excel 时出现 AssertionError