我得到一个文件每天约15列。有些日子有2个日期列和一些日子一个日期列。也有些日子的日期格式是YYYY-MM-DD和一些其DD-MM-YYYY。任务是转换2或1日期列MM-DD-YYYY。示例数据在csv文件中的几列:
| 执行日期|提取日期|申请人_姓名|计数|
| - ------|- ------|- ------|- ------|
| 2023年1月15日|2023年1月15日|约翰·史密斯|七|
有时我们无法获得上面的第二列-extract_date:
| 执行日期|申请人_姓名|计数|
| - ------|- ------|- ------|
| 二○二三年一月十七日|安德鲁·米尔|三个|
任务是查找文件中的所有日期列,并将日期格式更改为MM-DD-YYYY。
因此,上述2个文件的示例输出为:
| 执行日期|提取日期|申请人_姓名|计数|
| - ------|- ------|- ------|- ------|
| 二○二三年一月十五日|二○二三年一月十五日|约翰·史密斯|七|
| 执行日期|申请人_姓名|计数|
| - ------|- ------|- ------|
| 二○二三年一月十七日|安德鲁·米尔|三个|
我正在使用Pandas,不知道如何处理某些日子缺少的第二列和日期值格式的更改。
我可以硬编码这两个列名并通过以下方式更改格式:
df['Execution_Date'] = pd.to_datetime(df['Execution_Date'], format='%d-%m-%Y').dt.strftime('%m-%d-%Y')
df['Extract_Date'] = pd.to_datetime(df['Extract_Date'], format='%d-%m-%Y').dt.strftime('%m-%d-%Y')
这仅在文件有2列且值为DD-MM-YYYY格式时有效。
寻找关于如何动态查找日期列数和日期值格式的指导,以便我可以在上面的2行代码中使用它。如果没有,那么任何其他的解决方案也可以为我工作。我可以使用powershell,如果它不能在python中完成。但我猜将有更多的途径在python中做这件事比我们将在powershell。
2条答案
按热度按时间bzzcjhmw1#
下面的代码将一个CSV文件加载到一个 Dataframe 中,检查每个值(
str
),看看它是否与某个日期格式匹配,如果匹配,则将日期重新排列为您要查找的格式。但是,如果有其他列包含您不想更改的日期,而您只想指定要更改的列,请使用以下内容而不是上面的最后一行:
如果愿意,可以将列转换为日期时间。
rpppsulh2#
您可以使用函数检查所有包含"date"的列名,并使用. fillna尝试其他格式(添加所有可能的格式)。
输出: