0

我正在处理从 CSV 上传的数据框,我尝试更改在 CSV 文件中键入的数据并保存它,但由于某种原因它不允许我保存它,因此当我将它上传到 Pandas 时,日期和时间列显示为对象。我尝试了几种方法将它们转换为日期时间,但没有取得很大成功:

1)df['COLUMN'] = pd.to_datetime(df['COLUMN'].str.strip(), format='%m/%d/%Y') 给我错误:

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

2) 在开始时定义 dtypes,然后在read_csv命令中使用它 - 也给了我一个错误,因为它不接受 datetime,而只接受 string/int。

有的列我想有日期的datetime格式,比如:2019/1/1,有的时间:20:00:00

您知道将这些数据类型对象列转换为日期或时间的有效方法吗?

4

1 回答 1

0

根据讨论,我从您提供的链接中下载了数据集并通过 pandas 阅读。我拿了一个专栏和其中的一部分;它有日期并像你一样使用熊猫数据时间模块。通过这样做,我可以使用您提到的脚本。

#import necessary library
import numpy as np
import pandas as pd

#load the data into csv
data = pd.read_csv("NYPD_Complaint_Data_Historic.csv")

#take one column which contains the datatime as an example
dte = data['CMPLNT_FR_DT']

# =============================================================================
# I will try to take a part of the data from dte which contains the 
# date time and convert it to date time
# =============================================================================

from pandas import datetime
test_data  = dte[0:10]
df1 = pd.DataFrame(test_data)
df1['new_col'] = pd.to_datetime(df1['CMPLNT_FR_DT'])
df1['year'] = [i.year for i in df1['new_col']]
df1['month'] = [i.month for i in df1['new_col']]
df1['day'] = [i.day for i in df1['new_col']]


#The way you used to convert the data also works


df1['COLUMN'] =  pd.to_datetime(df1['CMPLNT_FR_DT'].str.strip(), format='%m/%d/%Y')

这可能是您获取数据的方式。你可以看到这个附件的输出。由于结果可以存储在数据框中,因此以任何格式保存都不是问题。如果我理解正确,请告诉我,它对你有帮助。月份没有显示在图像中,但你可以得到它。在此处输入图像描述

于 2019-12-19T00:39:02.477 回答