按特定顺序反转pandas Dataframe 中的字符串列

fcwjkofz  于 2023-01-19  发布在  其他
关注(0)|答案(2)|浏览(107)

我在数据框中有这一列,基本上是一个日期。

0       2023-01-01
1       2023-01-01
2       2023-01-01
3       2023-01-01
4       2023-01-01
           ...    
1015    2023-01-17
1016    2023-01-17
1017    2023-01-17
1018    2023-01-17
1019    2023-01-17

我想把上面的列转换成

0       01-01-2023
1       01-01-2023
2       01-01-2023
3       01-01-2023
4       01-01-2023
           ...    
1015    17-01-2023
1016    17-01-2023
1017    17-01-2023
1018    17-01-2023
1019    17-01-2023

我试着用这个:

df['date'] = "-".join(reversed(df['date'].split("-")))

但我得到以下错误:

AttributeError: 'Series' object has no attribute 'split'

有没有更好的方法来更改此列?

webghufk

webghufk1#

使用lambda函数:

df['date'] = df['date'].apply(lambda x: "-".join(reversed(x.split("-"))))
df['date'] = df['date'].str.split('-').apply(reversed).str.join('-')

更好的解决方案是将日期时间转换为自定义字符串:

df['date'] = pd.to_datetime(df['date']).dt.strftime('%d-%m-%Y')
hfyxw5xn

hfyxw5xn2#

我们可以在这里使用str.replace作为正则表达式选项:

df["date"] = df["date"].str.replace(r'(\d{4})-(\d{2})-(\d{2})', r'\3-\2-\1', regex=True)

然而,@jezrael给出的“更好”的解决方案是将文本date列转换为真正的日期,然后,如果你想以某种格式 * 查看 * 你的日期,使用strptime()

相关问题