Pythonize函数应用于pandas.Dataframe对象中的列

Pythonize函数应用于pandas.Dataframe对象中的列,python,pandas,lambda,dataframe,list-comprehension,Python,Pandas,Lambda,Dataframe,List Comprehension,以下几行将pandas.Dataframe对象中的所有列转换为数字 columns = ['a', 'b'] dft = pd.DataFrame(data=[['1','2'], ['3','4'],['5','6']], columns=columns) for col in columns: dft[col] = pd.to_numeric(dft[col]) 这很好,但是对于。。。in:很难看 我怎么说使用lambda函数和list comprehension让这个循环在一行中

以下几行将
pandas.Dataframe
对象中的所有列转换为数字

columns = ['a', 'b']
dft = pd.DataFrame(data=[['1','2'], ['3','4'],['5','6']], columns=columns)
for col in columns:
    dft[col] = pd.to_numeric(dft[col])
这很好,但是对于。。。in:很难看

我怎么说使用
lambda
函数和
list comprehension
让这个循环在一行中工作呢

(我尝试了很多方法,但我找不到如何将
pd.to\u numeric()
的结果分配给数据框中每列的变量名)

尝试:

dft=dft.applymap(lambda x:int(x))

对于记录,
applymap
用于应用lambda函数elementwise()

编辑

第二种方法是:

dft=dft.astype(int)

我还没有确定接近的时间。然而,我认为第二种方法更为泛泛,我在中找到了解决方案

下一个解决方案是使用
convert_objects
,但它会引发错误(V0.17.0):

FutureWarning:不推荐使用convert_对象。使用特定于数据类型的转换器pd.to_datetime、pd.to_timedelta和pd.to_numeric


对于……来说:
很难看”-在我看来很好。很清楚发生了什么,也不清楚你为什么认为有问题!您想转换所有列还是只转换某些列?这里碰巧这些都是列,但实际上我想转换(仅)给定列列表中的列。
print dft
print dft.dtypes
#   a  b  c
#0  1  2  5
#1  3  4  7
#2  5  6  9
#a    object
#b    object
#c    object
#dtype: object

dft1 = dft.apply(pd.to_numeric)

print dft1
print dft1.dtypes
#   a  b  c
#0  1  2  5
#1  3  4  7
#2  5  6  9
#a    int64
#b    int64
#c    int64
#dtype: object

dft[['a', 'b']] = dft[['a', 'b']].apply(pd.to_numeric)
print dft
print dft.dtypes
#   a  b  c
#0  1  2  5
#1  3  4  7
#2  5  6  9
#a     int64
#b     int64
#c    object
#dtype: object
dft.convert_objects(convert_numeric=True)