我之前曾成功使用过以下条件语句
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/