gpt4 book ai didi

python - Pandas 日期时间错误 : Cannot compare type 'Timestamp' with type 'unicode'

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:31 24 4
gpt4 key购买 nike

我有一个数据框,D1:

Date	Symbol	ICO_to
6/12/2017 18:00 MYST 5/30/2017
6/13/2017 18:00 MYST 5/30/2017
6/14/2017 18:00 MYST 5/30/2017
6/15/2017 18:00 MYST 5/30/2017
6/16/2017 18:00 MYST 5/30/2017
6/17/2017 18:00 MYST 5/30/2017
6/18/2017 18:00 MYST 5/30/2017
6/19/2017 18:00 MYST 5/30/2017
6/20/2017 18:00 MYST 5/30/2017

在下面,我输入逻辑以查看 Date 列是否小于 (ICO_to - 5 days)。如果它更少,我想删除这个特定数据框中的所有行:

D1.Date = pd.to_datetime(D1.Date) 
D1['Date'] = D1['Date'].dt.strftime('%m-%d-%Y')

D1.rename(columns={'ICO to': 'ICO_to'}, inplace=True)
D1.ICO_to = pd.to_datetime(D1.ICO_to)

for index, row in D1.iterrows():
if D1.loc[index, 'Date'] < (D1.loc[index, 'ICO_to']-pd.Timedelta(5, unit='d')):
D1.drop

但是我得到了错误,指的是上面循环中的if语句:

TypeError: Cannot compare type 'Timestamp' with type 'unicode' 

我认为这是因为您不能从 Datetime 值中减去 Timedelta 值,但我不确定。我怎样才能使这个 for 循环逻辑工作?

最佳答案

向量化您的计算。这是一种方法:

df['Date'] = pd.to_datetime(df['Date'])
df['ICO_to'] = pd.to_datetime(df['ICO_to'])

df = df.loc[~(df['Date'] < (df['ICO_to']-pd.Timedelta(5, unit='d'))), :]

解释

  • 条件~(df['Date'] < (df['ICO_to']-pd.Timedelta(5, unit='d')))产生一个 bool 数组。 ~表示消极。全部True数组的组成部分表示保留的行;同样False被删除。
  • documentation是了解矢量化您的计算的理想场所。

关于python - Pandas 日期时间错误 : Cannot compare type 'Timestamp' with type 'unicode' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49440379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com