Python 3.x 熊猫和日期时间强制。无法将整个列转换为时间戳

Python 3.x 熊猫和日期时间强制。无法将整个列转换为时间戳,python-3.x,pandas,timestamp,python-datetime,Python 3.x,Pandas,Timestamp,Python Datetime,所以,我有一个问题。熊猫一直告诉我 “datetime.date”被强制为datetime。 将来熊猫将不会强制,并且会引发一个类型错误。若要>保留当前行为,请将“datetime.date”转换为带有>“pd.Timestamp”的日期时间。 我想摆脱这个警告 所以直到现在我有一个包含一些数据的数据框,我在做一些过滤和操作。在某个时刻,我有一个字符串格式的日期列。我不在乎timzeones等。这都是关于一天的准确性。当我将字符串转换为datetime时,上面提到了一个警告,如下所示: df['

所以,我有一个问题。熊猫一直告诉我

“datetime.date”被强制为datetime。 将来熊猫将不会强制,并且会引发一个类型错误。若要>保留当前行为,请将“datetime.date”转换为带有>“pd.Timestamp”的日期时间。 我想摆脱这个警告 所以直到现在我有一个包含一些数据的数据框,我在做一些过滤和操作。在某个时刻,我有一个字符串格式的日期列。我不在乎timzeones等。这都是关于一天的准确性。当我将字符串转换为datetime时,上面提到了一个警告,如下所示:

df['Some_date']=pd.to_datetimedf['Some_date'],格式='%m/%d/%Y' 所以我试着这样做:

df['Some_date']=pd.Timestampdf['Some_date'] 但它失败了,因为pd.Timestamp不接受Series作为参数。 我正在寻找一种将这些字符串转换为时间戳的最快方法

=====================================

编辑

很抱歉,给你带来了困惑。我在另一个地方犯了错误。当我尝试像这样过滤数据时,就会发生这种情况: df=df[df['Some_date']>firstday] 其中第一天是基于日期时间计算的。就像这里:

导入日期时间 def get_dates_过滤器: lastday=datetime.date.today.replaceday=1-datetime.timedeltadays=1 firstday=lastday.replaceday=1 第一天回来,最后一天
因此,问题可能在于比较两种不同类型的日期表示法,因为python对日期的支持仍然很差,最好的方法是使用没有时间的日期时间

如果存在python日期,则可以在转换为日期时间之前将其转换为字符串:

如果需要从列中的日期时间中删除时间,请使用:

df['Some_date'] = pd.to_datetime(df['Some_date'].astype(str)).dt.floor('d')
测试:


谢谢你的回答@jezrael,但是,它没有太大变化。熊猫们仍然显示出对它们的警告coercion@Kraxi-你能加一些样品吗data@Kraxi-在panda 0.25中对样本数据进行测试,非常适合我,添加了样本数据来回答。你完全正确@jezrael。我在识别问题所在方面的错误。我对原始问题进行了修改。比较日期似乎是警告的原因
df['Some_date'] = pd.to_datetime(df['Some_date'].astype(str)).dt.floor('d')
rng = pd.date_range('2017-04-03', periods=3).date
df = pd.DataFrame({'Some_date': rng})  
print (df)
    Some_date
0  2017-04-03
1  2017-04-04
2  2017-04-05

print (type(df.loc[0, 'Some_date']))
<class 'datetime.date'>

df['Some_date'] = pd.to_datetime(df['Some_date'].astype(str))
print (df)
   Some_date
0 2017-04-03
1 2017-04-04
2 2017-04-05

print (type(df.loc[0, 'Some_date']))
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

print (df['Some_date'].dtype)
datetime64[ns]