为什么在pandas dataframe列中应用更改dtype

Ant*_*pov 5 python pandas

我有以下数据帧:

import pandas as pd
import numpy as np
df = pd.DataFrame(dict(A = np.arange(3), 
                         B = np.random.randn(3), 
                         C = ['foo','bar','bah'], 
                         D = pd.Timestamp('20130101')))

print(df)

   A         B    C          D
0  0 -1.087180  foo 2013-01-01
1  1 -1.343424  bar 2013-01-01
2  2 -0.193371  bah 2013-01-01
Run Code Online (Sandbox Code Playgroud)

dtypes 对于列:

print(df.dtypes)
A             int32
B           float64
C            object
D    datetime64[ns]
dtype: object
Run Code Online (Sandbox Code Playgroud)

但在使用apply它们之后所有对象的更改:

print(df.apply(lambda x: x.dtype))
A    object
B    object
C    object
D    object
dtype: object
Run Code Online (Sandbox Code Playgroud)

为什么dtypes强迫反对?我认为apply只应在列中考虑.

pandas 0.17.1
python 3.4.3

jez*_*ael 5

您可以在此处使用参数reduce=False和更多信息:

print (df.apply(lambda x: x.dtype, reduce=False))

A             int32
B           float64
C            object
D    datetime64[ns]
dtype: object
Run Code Online (Sandbox Code Playgroud)