python-3.x 如何在pandas.core.series.Series对象中的日和月中添加前导零

o0lyfsai  于 2023-10-21  发布在  Python
关注(0)|答案(2)|浏览(108)

我有一个很大的数据集,它没有月份或日期的前导零。当使用日期时间时,它期望日和月有一个前导零。
以下是我的数据集中日期的呈现方式:1/1/2023
如何将其转换为:01/01/2023

  • 尝试应用一种格式,但它似乎只适用于整数:print(“{:02 d}".format(number))-->这可以为整数添加前导零
  • 已尝试:merged_dfs[“Date”] = merged_dfs.apply(lambda x:“{month:02}-{day:02}-{year}".格式(月=x.月,日=x.日,年=x.年)

这将返回一个错误:属性错误:“Series”对象没有属性“month”

  • 已尝试:merged_dfs 'Date'] = merged_dfs.ts_placed.map(lambda x:“{year}-{month:02}”. format(year=x.year,month=x.month))

这将返回一个错误:属性错误:“DataFrame”对象没有属性“ts_placed”

  • 已尝试:merged_dfs[“Date”] = pd.to_datetime(merged_dfs[“Date”],format="%-d-%-m-%Y”)

返回错误:ValueError:“-”是格式为“%-d-%-m-%Y”的错误指令

  • 已尝试:merged_dfs[“Date”]=merged_dfs[“Date”].apply(pd.to_datetime,format="%d-$m-%Y”)

返回的错误:ValueError:时间数据“1/1/2023”与格式“%d-$m-%Y”不匹配,位于位置0。你可能想试试:- 如果字符串格式一致,则传递format;- 如果你的字符串都是ISO 8601,但不一定是完全相同的格式,则传递format='ISO8601';- 传递format='mixed',并为每个元素单独推断格式。您可能希望在此旁边使用dayfirst

gorkyyrv

gorkyyrv1#

你可以试试这个:

df = pd.DataFrame({'Date':['1/1/2023', '1/2/2023', '1/15/2023', '10/1/2023', '12/15/2023']})

df['Date_2'] = pd.to_datetime(df['Date'], format = '%m/%d/%Y').dt.strftime('%m/%d/%Y')

df

输出量:

Date      Date_2
0    1/1/2023  01/01/2023
1    1/2/2023  01/02/2023
2   1/15/2023  01/15/2023
3   10/1/2023  10/01/2023
4  12/15/2023  12/15/2023
amrnrhlw

amrnrhlw2#

重复使用@Scott的例子,格式无关的方法可以是使用正则表达式和str.replace来查找个位数并填充它们:

df['Date2'] = df['Date'].str.replace(r'\b(\d)\b', r'0\1', regex=True)

输出量:

Date       Date2
0    1/1/2023  01/01/2023
1    1/2/2023  01/02/2023
2   1/12/2023  01/12/2023
3   10/1/2023  10/01/2023
4  15/12/2023  15/12/2023

相关问题