gpt4 book ai didi

python - 将 Python 数据框中的多列转换为 yyyy/mm/dd,同时使用 excel 数值和普通日期时间值

转载 作者:行者123 更新时间:2023-12-04 22:23:21 26 4
gpt4 key购买 nike

我需要能够从数据框中的 Excel 文件中选择几列以应用标准日期时间格式(yyyy/mm/dd)。数据(不幸的是)混合了 Excel 数字(例如 43799)和标准日期格式(例如 2019 年 11 月 30 日)。我正在使用 pandas 的 read_excel 方法,并且不希望使用其他打开文件的方法(例如 xldr 的打开工作簿内容)。

导入数据时数据的示例:

import xlrd
import pandas as pd
import numpy as np
from datetime import datetime as dt

data=[['test', 43799, '11/30/2019', '11/30/2019'], ['test 2', '11/30/2019', '11/30/2019', '11/30/2019'], ['test 3', 43799, '11/30/2019', 43799]]
df=pd.DataFrame(data, columns=['Name','Date_1', 'Date_2', 'Date_3'])
print(df)

那么,如介绍中所述,如何选择第 1-3 列(Date_1、Date_2、Date_3)并将相同的日期格式应用于所有列(YYYY-MM-DD)?任何帮助将不胜感激!

最佳答案

您将需要使用不同的格式多次解析该列。 combine_first将允许您选择正确匹配的日期。 Excel 日期是自 1900-01-01 以来的天数,因此我们需要先将其更改为整数。

for col in ['Date_1', 'Date_2', 'Date_3']:
d1 = pd.to_datetime(df[col], format='%m/%d/%Y', errors='coerce')
d2 = pd.to_datetime(pd.to_numeric(df[col], errors='coerce'), unit='d', origin='1900-01-01')
df[col] = d1.combine_first(d2)
     Name     Date_1     Date_2     Date_3
0 test 2019-12-02 2019-11-30 2019-11-30
1 test 2 2019-11-30 2019-11-30 2019-11-30
2 test 3 2019-12-02 2019-11-30 2019-12-02

关于python - 将 Python 数据框中的多列转换为 yyyy/mm/dd,同时使用 excel 数值和普通日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60533828/

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