熊猫-Python重塑日期列

时间:2019-02-19 19:09:28

标签: python pandas

我的熊猫数据框中有一个这样的日期列。

我的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)

2 个答案:

答案 0 :(得分:2)

to_datetimestrftime一起使用,然后用原始列将其屏蔽掉

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]]))