pandas.apply 改变数据类型

pandas.apply changing the dtypes

这是示例 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 行一样打印。

自 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