gpt4 book ai didi

python - Pandas 中单个单元格中存在多个字符串导致的日期时间转换错误

转载 作者:行者123 更新时间:2023-12-01 00:24:45 26 4
gpt4 key购买 nike

我有一个数据帧df,如下所示,其中存在Date字段。我正在使用 pd.read_excel() 方法从 Excel 中读取此内容。

    Company Code    Trxn_date                Company Name     Type
20040 2019-05-11 00:00:00 ABC Series A #<--the date is in `datetime` object only.
20034 2019-04-26 00:00:00 XYZ Series A
20033 "5/15/2018\n23/4/2019" PQR "Series A
Series B" # <-- In same row.
20040 2019-06-05 00:00:00 ABC Series B
20056 8/16/2019 MNO Series B

如您所见,对于 20033Trxn_date 中有两个条目,间隔 \nType 字段也是如此。因此,如果我应用pd.to_datetime(df['Trxn_date']),我会得到一个明显的错误TypeError: invalid string coercion to datetime。我不想强制选项。

请注意,除了 2003320056 之外,所有日期都会被 pandas 自动转换为 datetime 对象。

我想按如下方式获取df

    Company Code    Trxn_date         Company Name    Type
20040 2019-05-11 ABC Series A
20034 2019-04-26 XYZ Series A
20033 2019-04-23 PQR Series B #<--Only the last date string is picked up and converted to datetime.
20040 2019-06-05 ABC Series B
20056 2019-08-16 MNO Series B #<--The date format is changed to `yyyy-mm-dd`.

我无法获得任何线索来实现上述目标。对于 20056 我可以使用 pd.to_datetime(df['Trxn_date'],errors='coerce').apply(lambda x : x.strftime('%Y-%m-% d') if pd.notnull(x) else ' ')。此操作会在 Trxn_date 字段中为 20033 创建一个空白。

有人可以对此提供任何见解吗?也许我必须编写一个函数,然后使用 lambda 来实现相同的功能?

最佳答案

您可以按 \n 拆分并按 str[-1] 获取最后列表,但 separator \n depends of real data, so should be different :

df['Trxn_date'] = df['Trxn_date'].str.split('\n').str[-1]
df['Type'] = df['Type'].str.split('\n').str[-1]

df['Trxn_date'] = pd.to_datetime(df['Trxn_date'],errors='coerce').dt.strftime('%Y-%m-%d')

关于python - Pandas 中单个单元格中存在多个字符串导致的日期时间转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58678235/

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