解决了以下问题。
我的熊猫中有一列,其中有一些日期和一些空值。
示例:
1 - 3-20-2019
2 -
3 - 2-25-2019
等
我想将格式从month-day-year年转换为day-month-year年,当其为空时,我只想保留为空。
最快的方法是什么?
谢谢!
答案 0 :(得分:2)
一个人可以使用字符串来初始化日期数据,然后将字符串转换为日期时间。然后,打印件可以按所需格式交付对象。
我将使用其他格式(以点作为分隔符),以便在步骤之间进行清晰的转换。
首先提供示例代码:
import pandas as pd
data = {'day': ['3-20-2019', None, '2-25-2019'] }
df = pd.DataFrame( data )
df['day'] = pd.to_datetime(df['day'])
df['day'] = df['day'].dt.strftime('%d.%m.%Y')
df[ df == 'NaT' ] = ''
对以上内容的评论。
df
的第一个实例在ipython解释器中:
In [56]: df['day']
Out[56]:
0 3-20-2019
1 None
2 2-25-2019
Name: day, dtype: object
转换为日期时间后:
In [58]: df['day']
Out[58]:
0 2019-03-20
1 NaT
2 2019-02-25
Name: day, dtype: datetime64[ns]
以便我们拥有
In [59]: df['day'].dt.strftime('%d.%m.%Y')
Out[59]:
0 20.03.2019
1 NaT
2 25.02.2019
Name: day, dtype: object
NaT
引起了问题。因此,我们将所有出现的内容替换为空字符串。
In [73]: df[ df=='NaT' ] = ''
In [74]: df
Out[74]:
day
0 20.03.2019
1
2 25.02.2019
答案 1 :(得分:1)
不确定这是否是完成任务的最快方法。反正
df = pd.DataFrame({'Date': {0: '3-20-2019', 1:"", 2:"2-25-2019"}}) #your dataframe
df['Date'] = pd.to_datetime(df.Date) #convert to datetime format
df['Date'] = [d.strftime('%d-%m-%Y') if not pd.isnull(d) else '' for d in df['Date']]
输出:
Date
0 20-03-2019
1
2 25-02-2019