我的熊猫数据框中有一个这样的日期列。
我的DataFrame看起来像这样,
ID SerialDate
1 2008-1-15
2 T1
3 2008-1-17
4 T1
T1是此列中唯一的文本,不会有任何空格。此列的dtype是object
我需要更改它的外观,
预期的数据框:-
ID SerialDate
1 15/01/2008
2 T1
3 17/01/2008
4 T1
预期的dtype:-对象。
如何使用熊猫来做到这一点。我希望使用用户定义的函数,例如df [colb] = requiredfunction(df,colb)
答案 0 :(得分:2)
将to_datetime
与strftime
一起使用,然后用原始列将其屏蔽掉
df=pd.read_clipboard()
s=pd.to_datetime(df.SerialDate,errors = 'coerce').dt.strftime('%d/%m/%Y')
df.SerialDate=s.mask(s=='NaT',df.SerialDate)
df
Out[402]:
ID SerialDate
0 1 15/01/2008
1 2 T1
2 3 17/01/2008
3 4 T1
答案 1 :(得分:2)
您可以通过基本的字符串操作轻松生成所需的输出并应用熊猫功能
df['SerialDate'] = df['SerialDate'].apply(lambda x:'/'.join(x.split('-')[::-1]))
在您的特定情况下,“ T1”也不受此操作的影响。
说明:
[::-1]
会做什么?
>> [1,2,3][::-1]
>> [3,2,1]
它反转一个数组
要转换x-> 0x
df['SerialDate'] = df['SerialDate'].apply(lambda x:'/'.join([y.zfill(2) for y in x.split('-')[::-1]]))