微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 从pandas中的对象日期剥离时间

我在压缩的xlsx文件中遇到了一些日期问题.这些文件将加载到sqlite数据库中,然后导出为.csv.每个文件大约每天40,000行.我遇到的问题是pd.to_datetime似乎不适用于这些对象(Excel格式的日期导致了我认为的问题 – 纯.csv文件可以正常使用此命令).实际上这很好 – 我不需要它们采用日期时间格式.

我想要实现的是创建一个名为ShortDate的列,它是%m /%d /%Y.如何在日期时间对象上执行此操作(格式为mm / dd / yyyy hh:mm:来自Excel的ss).然后,我将创建一个名为RosterID的新列,它将EmployeeID字段和ShortDate字段组合成一个唯一的ID.

我对pandas很新,我目前只使用它来处理.csv文件(重命名和选择某些列,创建在Tableau中使用过滤器的唯一ID等).

rep = pd.read_csv(r'C:\Users\Desktop\test.csv.gz', dtype = 'str', compression = 'gzip', usecols = ['etc','etc2'])
print('Read successfully.')
rep['Total']=1
rep['UniqueID']= rep['EmployeeID'] + rep['InteractionID']
rep['ShortDate'] = ??? #what do I do here to get what I am looking for?
rep['RosterID']= rep['EmployeeID'] + rep['ShortDate'] # this is my goal
print('Modified successfully.')

以下是.csv中的一些原始数据.列名称将是

InteractionID, Created Date, EmployeeID, Repeat Date
07927,04/01/2014 14:05:10,912a,04/01/2014 14:50:03
02158,04/01/2014 13:44:05,172r,04/04/2014 17:47:29
44279,04/01/2014 17:28:36,217y,04/07/2014 22:06:19

解决方法:

创建一个新列,然后使用lambda和apply应用简单的datetime函数.

In [14]: df['Short Date']= pd.to_datetime(df['Created Date'])

In [15]: df
Out[15]: 
   InteractionID    Created Date EmployeeID     Repeat Date  \
0           7927  4/1/2014 14:05       912a  4/1/2014 14:50   
1           2158  4/1/2014 13:44       172r  4/4/2014 17:47   
2          44279  4/1/2014 17:28       217y  4/7/2014 22:06   

           Short Date  
0 2014-04-01 14:05:00  
1 2014-04-01 13:44:00  
2 2014-04-01 17:28:00  

In [16]: df['Short Date'] = df['Short Date'].apply(lambda x:x.date().strftime('%m%d%y'))

In [17]: df
Out[17]: 
   InteractionID    Created Date EmployeeID     Repeat Date Short Date  
0           7927  4/1/2014 14:05       912a  4/1/2014 14:50     040114   
1           2158  4/1/2014 13:44       172r  4/4/2014 17:47     040114   
2          44279  4/1/2014 17:28       217y  4/7/2014 22:06     040114

然后只连接两列.将Short Date列转换为字符串,以避免字符串和整数串联时出错.

In [32]: df['Roster ID'] = df['EmployeeID'] + df['Short Date'].map(str)

In [33]: df
Out[33]: 
   InteractionID    Created Date EmployeeID     Repeat Date Short Date  \
0           7927  4/1/2014 14:05       912a  4/1/2014 14:50     040114   
1           2158  4/1/2014 13:44       172r  4/4/2014 17:47     040114   
2          44279  4/1/2014 17:28       217y  4/7/2014 22:06     040114   

    Roster ID  
0  912a040114  
1  172r040114  
2  217y040114 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐