pandas.apply改变dtypes

时间:2015-09-03 14:23:53

标签: python pandas dataframe apply

以下是示例DataFrame,它有两列。第一个是角色,第二个是日期时间。

df = DataFrame([['960958','2013-01-24 00:00:00'], ['960918','2013-01-24 00:00:00']],columns=['col1','col2'])
df.col2 = pd.to_datetime(df.col2,format='%Y-%m-%d %H:%M:%S')

现在我正在尝试打印数据,第一行正确打印,因为发送行打印不正确,因为col1正在转换为日期和打印。

def printdata(line):
    print line
df.apply(printdata,axis=1)

请帮助解决这个问题,我的编码出了什么问题以及如何纠正错误。

这是下面的输出

#Output
col1                 960958
col2    2013-01-24 00:00:00
Name: 0, dtype: object
col1   1996-09-18
col2   2013-01-24
Name: 1, dtype: datetime64[ns]
Out[290]: 
0    None
1    None
dtype: object

如果您观察到输出线3和第6行dtype不同而第1行正确打印在第4行,则打印日期不正确。它应该与第1行打印一样。

1 个答案:

答案 0 :(得分:1)

从0.16.2

IIRC这与here相同,并在0.16.0中修复

In [5]: df = DataFrame([['960958','2013-01-24 00:00:00'], ['960918','2013-01-24 00:00:00']],columns=['col1','col2'])

In [6]: df.col2 = pd.to_datetime(df.col2,format='%Y-%m-%d %H:%M:%S')

In [7]: In [6]: def printdata(line):
       ...:     print line
       ...:

In [8]: In [7]: df.apply(printdata,axis=1)
col1                 960958
col2    2013-01-24 00:00:00
Name: 0, dtype: object
col1                 960918
col2    2013-01-24 00:00:00
Name: 1, dtype: object
Out[8]: 
0    None
1    None
dtype: object