加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Python中的pandas和datatime从字符串中获取时间信息

发布时间:2020-12-20 13:13:02 所属栏目:Python 来源:网络整理
导读:我正在为暑期学校做测试练习,这是我第一次使用 python. 据说,我可以通过以下代码获取我的时间信息: import pandas as pdfrom datetime import datetimedef print_time_range(times): print('Time from: {0},to: {1}'.format(datetime.fromtimestamp(times.m
我正在为暑期学校做测试练习,这是我第一次使用 python.
据说,我可以通过以下代码获取我的时间信息:

import pandas as pd
from datetime import datetime

def print_time_range(times):
    print('Time from: {0},to: {1}'.format(datetime.fromtimestamp(times.min()),datetime.fromtimestamp(times.max())))

train_likes_df = pd.read_csv('train_likes.csv')
print train_likes_df.shape
train_likes_df.head(3)
print_time_range(train_likes_df.time)

这将给我输出:

Time from: 2014-01-10 17:15:37,to: 2016-02-24 15:15:37.

从与此类似的时间元素:1389733974.0.

但是我得到了一个带有pandas的属性错误,声称没有这样的属性time

error


我明白,那个时间是数据时间的方法,不能用DataFrame,但这就是我所理解的.我怎样才能使它全部工作?

CSV file

解决方法

我想你需要 dt.time

print_time_range(train_likes_df.time.dt.time)

你需要to_datetime参数单位:

train_likes_df['time'] = pd.to_datetime(train_likes_df['time'],unit='s')

样品:

import pandas as pd
import io

temp=u"""user_id,item_id,channel,time
aa,bb,cc,1389733974
aa,1390459377"""
#after testing replace io.StringIO(temp) to filename
train_likes_df = pd.read_csv(io.StringIO(temp))

print (train_likes_df)
  user_id item_id channel        time
0      aa      bb      cc  1389733974
1      aa      bb      cc  1390459377

train_likes_df['time'] = pd.to_datetime(train_likes_df['time'],unit='s')
print (train_likes_df)
  user_id item_id channel                time
0      aa      bb      cc 2014-01-14 21:12:54
1      aa      bb      cc 2014-01-23 06:42:57

print (train_likes_df.time.dt.time)
0    21:12:54
1    06:42:57
Name: time,dtype: object

你的功能很好用:

from datetime import datetime
def print_time_range(times):
    print ('Time from: {0},datetime.fromtimestamp(times.max())))

print_time_range(train_likes_df.time)
Time from: 2014-01-14 22:12:54,to: 2014-01-23 07:42:57

如果有keyerror,也许有一些空间,可以通过print(train_likes_df.columns)检查 – 列时间有问题 – 有空间:

import pandas as pd
import io

temp=u"""user_id,time,test
aa,1389733974,1
aa,1390459377,2"""
#after testing replace io.StringIO(temp) to filename
train_likes_df = pd.read_csv(io.StringIO(temp))

print (train_likes_df)
  user_id item_id channel       time   test
0      aa      bb      cc  1389733974     1
1      aa      bb      cc  1390459377     2

print (train_likes_df.columns)
Index(['user_id','item_id','channel','time ','test'],dtype='object')

您可以在strip之前删除空格:

train_likes_df.columns = train_likes_df.columns.str.strip()

print (train_likes_df.columns)
Index(['user_id','time',dtype='object')

按文件编辑(我添加.head()仅过滤前5条记录以获得更好的输出):

import pandas as pd

train_likes_df = pd.read_csv('train_likes.csv')
train_likes_df['time'] = pd.to_datetime(train_likes_df['time'],unit='s')

print (train_likes_df.head())
                            user_id                           item_id  
0  612d8e8eef05acff3278c061ec10f704  7aa5d00445cb9d61d1739dd0df9a0a88   
1  71a7f1d1be96603971ba66e4a17e845c  5edaf734b432e5cc954a10b59cb97e70   
2  6eaa117728d50265e6b2ac24a80e04ae  8ad97d075fce19c2d182eb2a4539aa1c   
3  5d9db6ab742755197343505bccfad516  aa5f2ca699da42e467e550f9f071fb3f   
4  3000a163610654f1fa181e74136d2d35  8142d0e687c1c7a317ed9673db9f11a4   

                            channel                time  
0  1f0e3dad99908345f7439f8ffabdffc4 2014-01-14 21:12:54  
1  ec5decca5ed3d6b8079e2e7e7bacc9f2 2014-01-23 06:42:57  
2  98f13708210194c475687be6106a3b84 2014-01-30 06:39:23  
3  98f13708210194c475687be6106a3b84 2014-01-30 03:36:17  
4  c74d97b01eae257e44aa9d5bade97baf 2014-02-14 12:30:23  

print (train_likes_df.time.dt.time.head())
0    21:12:54
1    06:42:57
2    06:39:23
3    03:36:17
4    12:30:23
Name: time,dtype: object

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读