对字符串的自定义函数如何作用到列

对字符串的自定义函数如何作用到列

因时间格式不一致,遇到类似‘20230101050505’的格式试了几个办法均无法直接转化到datetime,想着先str后做拆分规范格式,故设了一个自定义函数,转化格式,但是想不到该如何作用到整列。
数据假设如下:

import pandas as pd
data=[[4,7,20230102112349],
[5,8,20230301134456],
[6,9,20230408111111]]
df=pd.DataFrame(data,columns=['A','B','C'],index=list('abc'))

自定义了一个截取时间函数

def get_time(a):
    return a[0:4]+'-'+a[4:6]+'-'+a[6:8]

想提问的是:
1.对单个有用,不知道该如何作用到新增列里面,比如df['D']如何调用该函数赋值;
2.对这类有没有其他简便办法。

import pandas as pd


def get_time(a):
    temp = a['C'].astype("str")
    return temp[0:4] + '-' + temp[4:6] + '-' + temp[6:8]

data=[[4,7,20230102112349],
[5,8,20230301134456],
[6,9,20230408111111]]

df = pd.DataFrame(data, columns=['A','B','C'], index=list('abc'))
df['C'] = df.apply(get_time, axis=1)

print(df)

img

有帮助的话,请点采纳该答案~


import pandas as pd
from datetime import datetime


def to_datetime(d: str) -> datetime:
    return datetime(
        int(d[:4]),
        int(d[4:6]),
        int(d[6:8]),
        int(d[8:10]),
        int(d[10:12]),
        int(d[12:14])
    )

data = [[4,7,20230102112349],
[5,8,20230301134456],
[6,9,20230408111111]]

data = [[d[0], d[1], to_datetime(str(d[2]))] for d in data]
df=pd.DataFrame(data,columns=['A','B','C'],index=list('abc'))


new_date_list = [20230102112349, 20230301134456, 20230408111111]
df['D'] = [to_datetime(d) for d in list(map(str, new_date_list))]

print(df)

希望可以帮助到你。