如何改变datafram中不同日期的datetime格式

2024-09-28 05:37:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题与线程有关 How to change the datetime format in pandas

这里提供的解决方案对于一个日期很有效,但是如果在同一个数据帧中有不同的日期呢?你知道吗

例如,我在datetime中的日期是

2016-01-26
2016-01-27
2016-01-28
2016-01-29

代码与另一个线程中使用两次相同日期的代码相同:

import pandas as pd

df = pd.DataFrame({'DOB': {0: '26/1/2016', 1: '26/1/2016'}})
print (df)
         DOB
0  26/1/2016 
1  26/1/2016

df['DOB'] = pd.to_datetime(df.DOB)
print (df)
         DOB
0 2016-01-26
1 2016-01-26

df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print (df)
         DOB        DOB1
0 2016-01-26  01/26/2016
1 2016-01-26  01/26/2016

我还在datetime to string with series in python pandas上发现了这个代码

df['DOB1'] = df['DOB'].apply(lambda x:x.strftime('%m/%d/%Y'))

还有这个:

df['DOB1'] = df['DOB'].map(lambda x:x.strftime('%m/%d/%Y'))

例如,在我的数据帧DOB中,我有以下日期,并且希望它们的格式不同。你知道吗

日期时间格式的我的日期:

0  2016-01-26
1  2016-01-27
2  2016-01-28  
3  2016-01-29  

期望输出:

01/26/2016
01/27/2016
01/28/2016
01/29/2016

我一直在使用与上面相同的代码,但是当我运行它们时(不管是哪种代码),所有的日期都会变成

01/26/2016
01/26/2016
01/26/2016
01/26/2016

似乎pandas接受第一个值并将其应用于数据帧的其余部分。我怎样才能让熊猫阅读和转换不同的日期?你知道吗

谢谢你!你知道吗


Tags: to数据lambda代码inpandasdfdatetime
2条回答

我运行了你的代码,结果和你预期的一样。你知道吗

import pandas as pd
df = pd.DataFrame({'DOB': {0: '26/1/2016', 1: '27/1/2016', 2: '28/1/2016'}})
df['DOB'] = pd.to_datetime(df.DOB)
df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')

结果:

         DOB        DOB1
0 2016-01-26  01/26/2016
1 2016-01-27  01/27/2016
2 2016-01-28  01/28/2016

在不了解更多细节的情况下,我建议您创建一个函数并将其应用于您的专栏。你知道吗

convert_date = lambda i: i.strftime('%m/%d/%Y')
df['DOB'].apply(convert_date)

0    01/26/2016
1    01/27/2016
2    01/28/2016

谢谢你调查此事。我发现了我的错误,这有点尴尬,但我确实想把问题留在这里-同时也向其他初学者展示你可以在哪里出错,而不是一开始就发现错误。我也欠好心人谁提供了答复一个解释。你知道吗

我确实使用了上面的代码作为例子。但在我的代码中,我忘了在strftime中包含%d。所以,约会当然像

2016-01-26
2016-01-27
2016-01-28
2016-01-29

将转换为

2016\01
2016\01
2016\01
2016\01

然而,只有当N.阿鲁诺帕约回答时,我才看到它!!!我想知道我怎么会错过这个??你知道吗

很抱歉,再次感谢你的帮助!你知道吗

相关问题 更多 >

    热门问题