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)