我在pandas DataFrame中有一个字段,它以字符串格式导入.它应该是一个日期时间变量.如何将其转换为日期时间列,然后根据日期进行过滤.
例:
我无法使scilearn与datetime系列配合使用。
找到了这篇文章,但是对我没有帮助= Pandas:TypeError:float()参数必须是字符串或数字
csv文件具有2个带有日期的日期列,日期的格式如下:2017-07-21 06:19:53(字符串)
我将字符串转换为datetime64 [ns],因此日期变成了一个长值,我可以对其进行计算。scilearn拒绝此类型,并给出错误float()参数必须是字符串或数字,而不是'Timestamp'
还尝试了pandas.to_datetime()倒霉。
我在scilearn中使用的模型是KMeans聚类模型。在打印dtypes时,结果如下:
ip int64
date datetime64[ns]
succesFlag int64
app int64
enddate datetime64[ns]
user_userid int64
dtype: object
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def getDataframe():
df = pd.read_csv(filename)
df['date']=df['date'].astype('datetime64[ns]',inplace=True)
df['enddate']=df['enddate'].astype('datetime64[ns]',inplace=True)
df['app']=df['app'].replace({
"Azure": 0 ,
"Peoplesoft":1,
"Office":2 ,
"DevOps":3 ,
"Optima":4 ,
"Ada-Tech": 5
},inplace=True)
df['ip']=df['ip'].apply(lambda x: int(ip4.ip_address(x))).to_frame('ip')
print(df.dtypes)
return df
Run Code Online (Sandbox Code Playgroud)
期望KMeans聚类模型可以将数值转换为数值,但事实并非如此。
我怎么了?