gpt4 book ai didi

python - Pandas:向表示日期的长整数添加 0

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:29 25 4
gpt4 key购买 nike

我正在尝试将 csv 导入 panda。该 csv 包含如下数据列(例如):

20170607155749330:(年/月/日/小时/分钟/秒/十分秒/厘秒/毫秒)。所以有 17 个数字代表日期。

我遇到的问题是,对于这个特定的数据集,某些行的日期精度不同,例如:2017060715581995:这里只有 16 个数字,因为缺少毫秒。

我想做的很简单:通过在其中一个缺失时添加 0,以最终得到 17 位数字的方式转换每一行的每个日期。

这是我为此编写的函数:

def convert_value(val):
return ('{:0<17}'.format(val))

因此,我尝试通过创建一个新列将其应用到每一行,例如:

file_temp['Time_Transformed'] = file_temp.apply( lambda x: convert_value(x["TIME"]) , axis =1)

我面临两个问题:

  1. 首先,新创建的列不是整数,而是对象类型;
  2. 其次,它不起作用,0 不会添加到较短的日期。

我尝试了各种其他方法,将原始数据转换为字符串,但它们也不起作用。

最佳答案

我认为你需要astypestr.ljust :

df = pd.DataFrame({'A':[20170607155749330,20170607155749]})

df['new'] = df['A'].astype(str).str.ljust(17, '0').astype('int64')
print (df)
A new
0 20170607155749330 20170607155749330
1 20170607155749 20170607155749000

对于日期时间:

df['date'] = pd.to_datetime(df['A'].astype(str).str.ljust(17, '0'), format='%Y%m%d%M%S%f')
print (df)
A date
0 20170607155749330 2017-06-07 00:15:57.493300
1 20170607155749 2017-06-07 00:15:57.490000

等同于:

df['date'] = pd.to_datetime(df['A'], format='%Y%m%d%M%S%f')
print (df)
A date
0 20170607155749330 2017-06-07 00:15:57.493300
1 20170607155749 2017-06-07 00:15:57.490000

关于python - Pandas:向表示日期的长整数添加 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com