python - 在数据框列表中组合日期和时间(时间戳)
问题描述
我希望将日期和时间组合成数据框列表上的一个时间戳,并指定一周的通话日期。
这是错误:ValueError:无法将字符串转换为时间戳
我使用了以下功能:
def new_call_time(df):
i=0
df[' CALL_DATE_MANIPULATED']=str(df['CALL_DATE'][i]).split()[0] + ' ' + str(df['CALL_TIME'][i])
df[' UNIX_TIME']= pd.Timestamp(df[' CALL_DATE_MANIPULATED'][i]).value//10 ** 9
df[' WEEK']=''
for i in range(len(df)):
df[' CALL_DATE_MANIPULATED'][i]=str(df['CALL_DATE'][i]).split()[0] + ' ' + str(df['CALL_TIME'][i])
df[' UNIX_TIME'][i]= pd.Timestamp(df[' CALL_DATE_MANIPULATED'][i]).value// 10 ** 9
df[' WEEK'][i]=df[' UNIX_TIME'][i]//604800
return df
这是函数调用语句:
for df in data_frame :
df = new_call_time(df)
以下是我从 excel 表中读取的表格(包含在名为 data_frame 的列表中):
CALL_DATE CALL_TIME
01-JAN-2016 00:15:06
01-JAN-2016 07:07:00
CALL_DATE CALL_TIME
01-JAN-2016 08:40:38
01-JAN-2016 08:44:14
CALL_DATE CALL_TIME
01-JAN-2016 08:51:10
01-JAN-2016 09:06:31
这适用于单个数据框,但不适用于数据框列表。
新表也应具有以下列:示例:data_frame[0] -
CALL_DATE CALL_TIME CALL_DATE_MANIPULATED UNIX_TIME WEEK
01-JAN-2016 00:15:06 01-JAN-2016 00:15:06 1451607306 2400
01-JAN-2016 07:07:00 01-JAN-2016 07:07:00 1451632020 2400
非常感谢 :)))
解决方案
Series.str.split
与索引一起使用str[0]
,然后to_datetime
与参数一起errors='coerce'
使用,NaT
如果某些值与中定义的格式不匹配format
(参数格式是为了更好的性能,但应该省略):
def new_call_time(df):
df['CALL_DATE_MANIPULATED'] = (df['CALL_DATE'].astype(str).str.split().str[0] + ' ' +
df['CALL_TIME'].astype(str))
dates = pd.to_datetime(df['CALL_DATE_MANIPULATED'],
errors='coerce',
format='%d-%b-%Y %H:%M:%S')
df['UNIX_TIME'] = dates.values.astype(np.int64) // 10 ** 9
df['WEEK'] = df['UNIX_TIME'] //604800
return df
在列表推导中调用函数 new list of DataFrames
:
data_frame1 = [new_call_time(df) for df in data_frame]
推荐阅读
- javascript - CSS 帮助选择某个类的最后一个元素
- reactjs - webpack --optimize-minimize vs -p
- ios - 如何在 Swift4 中获取另一个类的枚举内容?
- terminology - 指定既操作对象又返回值的函数,与前者或后者的函数相反?
- javascript - 如何使用 Axios 一次执行一项删除请求?
- angularjs - Angular Scope 变量将结果从 $http 附加到数据变量而不是覆盖它
- java - Spring Boot 中默认不使用自定义密钥生成器
- javascript - H1 标签不会只加载到我的页面上的 javascript 部分,这是为什么呢?
- c# - 在 asp.net 的 web.config 中将基于角色的身份验证设置为 defaultUrl
- jquery - 如何将 jquery 代码转换为 Angular 4?