数据框中的一列是这样的:
2018-01-23 23:55:07
我想将此列中的值转换为Unix时间。 下面是我的代码:
def convert_to_unix(s):
return float(time.mktime(datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S").timetuple()))
pd.set_option('display.max_columns', None)
fields=['JOB_START_TIMESTAMP','JOB_END_TIMESTAMP','JOB_RUNTIME_SECONDS', 'JOB_NODES_USED']
df_temp=pd.read_csv('a.csv',usecols=fields)
df_temp['JOB_START_TIMESTAMP']=df_temp['JOB_START_TIMESTAMP'].apply(convert_to_unix)
然后显示错误TypeError: must be string, not float
。
error_ image
有谁能够帮助我?非常感谢!
答案 0 :(得分:0)
下面的代码将日期列(datetime64[ns]
)转换为unix时间(float64
)。
导入库
import pandas as pd
import numpy as np
from datetime import datetime
from time import mktime
创建示例数据框
df = pd.DataFrame({'Date': ['2018-01-23 23:55:07', '2017-01-23 23:55:07', '2015-11-23 11:50:07',
'2013-01-03 13:55:07', '2007-01-24 23:55:07', '2017-12-23 12:55:07']})
df['Date'] = pd.to_datetime(df['Date'])
df
转换为Unix时间的功能
def convert_to_unix(s):
return df.apply(lambda x: mktime((x['Date']).timetuple()),axis=1)
获取Unix时间
df['unix_time'] = convert_to_unix(df)
df
df.dtypes
不使用功能的替代方法
df['unix_time'] = df.apply(lambda x: mktime((x['Date']).timetuple()),axis=1)
df
答案 1 :(得分:0)
感谢库纳尔。我的问题是我的数据中有NaTType。 他的回答有效且简洁,因为它在评论中并且被隐藏了,我只是将其放在此处。 df_temp ['JOB_START_TIMESTAMP'] = df_temp ['JOB_START_TIMESTAMP']。apply(pd.Timestamp).apply(pd.Timestamp.timestamp)