如何用Pandas拆分DataFrame列并转换日期格式?
嘿,这个需求我之前处理过,很容易搞定!咱们一步步来:
步骤1:拆分WO No列(你的初始代码已经没问题)
你用df.pop('WO No').str.split('-', expand=True)拆分列的方法是完全正确的,这会把原WO No列从DataFrame中移除,同时拆分出CO、WO Date、WO ID三列——比如OR-20180422-12345会被拆成OR、20180422、12345。
步骤2:转换WO Date为dd/mm/yyyy格式
拆分后的WO Date是纯数字字符串(比如20180422),我们需要先把它转换成datetime对象,再格式化为你要的dd/mm/yyyy格式。这里推荐指定format参数来确保转换准确,避免Pandas自动推断时出错:
import pandas as pd # 示例DataFrame df = pd.DataFrame({'WO No': ['OR-20180422-12345', 'XY-20240115-54321']}) # 拆分WO No列 df[['CO','WO Date','WO ID']] = df.pop('WO No').str.split('-', expand=True) # 转换日期格式:先转datetime,再格式化为dd/mm/yyyy字符串 df['WO Date'] = pd.to_datetime(df['WO Date'], format='%Y%m%d').dt.strftime('%d/%m/%Y') # 查看结果 print(df)
运行后WO Date列的值就会变成22/04/2018、15/01/2024这样的格式啦。
额外说明:如果需要保留datetime类型(方便后续日期操作)
如果你只是希望显示的时候是dd/mm/yyyy,但实际存储还是datetime对象(方便做日期筛选、计算等操作),可以不用strftime,而是设置Pandas的显示选项:
pd.options.display.date_format = '%d/%m/%Y' # 仅转换为datetime对象即可,不用转成字符串 df['WO Date'] = pd.to_datetime(df['WO Date'], format='%Y%m%d')
这样在打印或查看DataFrame时,日期会以dd/mm/yyyy显示,但列的类型还是datetime,完全不影响后续的日期相关操作。
内容的提问来源于stack exchange,提问作者okl
相关产品推荐
相关产品推荐

