【发布时间】:2018-09-01 13:59:01
【问题描述】:
我有一个数据框,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
下面,我输入逻辑来查看日期列是否小于(ICO_to - 5 天)。如果它更少,我想删除这个特定数据框中的所有行:
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 循环逻辑工作?
【问题讨论】:
-
您实际上想解决什么问题?您不需要循环,您可以 100% 将其矢量化。我想看看你的预期输出,我可以帮助你:)
-
@COLDSPEED 我有许多不同的加密货币代码都在相同类型的数据帧中,我稍后将它们合并到一个数据帧中。如果 Date 值在 ICO_to 值之前
标签: python pandas datetime for-loop