Pandas使用unix时间戳(以毫秒为单位)将行转换为datetime
发布时间:2020-12-15 19:05:04 所属栏目:安全 来源:网络整理
导读:我需要处理大量的CSV文件,其中时间戳始终是表示unix时间戳的字符串,以毫秒为单位。我找不到一种方法来有效地修改这些列。 这就是我提出的,但是这当然只复制了列,我必须以某种方式将它放回原始数据集。我确定在创建DataFrame时可以完成吗? import sysif
我需要处理大量的CSV文件,其中时间戳始终是表示unix时间戳的字符串,以毫秒为单位。我找不到一种方法来有效地修改这些列。
这就是我提出的,但是这当然只复制了列,我必须以某种方式将它放回原始数据集。我确定在创建DataFrame时可以完成吗? import sys if sys.version_info[0] < 3: from StringIO import StringIO else: from io import StringIO import pandas as pd data = 'RUN,UNIXTIME,VALUEn1,1447160702320,10n2,1447160702364,20n3,1447160722364,42' df = pd.read_csv(StringIO(data)) convert = lambda x: datetime.datetime.fromtimestamp(x / 1e3) converted_df = df['UNIXTIME'].apply(convert) 这将选择“UNIXTIME”列并从中进行更改 0 1447160702320 1 1447160702364 2 1447160722364 Name: UNIXTIME,dtype: int64 进入这个 0 2015-11-10 14:05:02.320 1 2015-11-10 14:05:02.364 2 2015-11-10 14:05:22.364 Name: UNIXTIME,dtype: datetime64[ns] 但是,我想使用像pd.apply()这样的东西来获取转换后的列返回的整个数据集,或者正如我已经写过的那样,只需在从CSV生成DataFrame时创建日期时间。
您可以使用
to_datetime 作为后处理步骤并传递arg unit =’ms’:
In [5]: df['UNIXTIME'] = pd.to_datetime(df['UNIXTIME'],unit='ms') df Out[5]: RUN UNIXTIME VALUE 0 1 2015-11-10 13:05:02.320 10 1 2 2015-11-10 13:05:02.364 20 2 3 2015-11-10 13:05:22.364 42 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |