Python 将函数应用于多列时,iloc和loc不工作,

Python 将函数应用于多列时,iloc和loc不工作,,python,python-3.x,pandas,Python,Python 3.x,Pandas,假设这是我的df,开始时数据类型是int64 A B C 0 1 2 3 1 5 6 7 2 8 9 10 3 13 14 15 然后我尝试使用 df = df.astype(str) df.dtypes A int64 B int64 C int64 dtype: object 现在它将数据类型更改为object,这与我预期的一样。现在我尝试使用pd.to\u numeric和apply函数再次将一些列转换为d

假设这是我的
df
,开始时数据类型是
int64

    A   B   C
0   1   2   3
1   5   6   7
2   8   9   10
3   13  14  15
然后我尝试使用

df = df.astype(str)
df.dtypes

A    int64
B    int64
C    int64
dtype: object
现在它将数据类型更改为
object
,这与我预期的一样。现在我尝试使用
pd.to\u numeric
apply
函数再次将一些列转换为dtype
int64

df.iloc[:, 0:2] = df.iloc[:, 0:2].apply(pd.to_numeric, errors='coerce')
print(df.dtypes)
A    object
B    object
C    object
dtype: object
执行了上述代码,但没有将col
A和B的数据类型更改为
int64
。它们仍然是数据类型
对象
。我不明白为什么它不起作用

我甚至用
loc
而不是
iloc
尝试了相同的代码,但仍然不起作用。数据类型仍然是
object

df.loc[:, ['A','B']] = df.loc[:, ['A','B']].apply(pd.to_numeric, errors='coerce') 
但是当我只使用
df[[cols]]
时,它就工作了

df[['A','B']] = df[['A','B']].apply(pd.to_numeric, errors='coerce') # This works 

注意:我已经搜索了,但找不到与我的问题相关的任何内容。如果这是一个重复的问题,请告诉我

我想说这是一个bug。我可以补充一点,问题不在于
iloc
loc
没有像问题中暗示的那样“改变”
dtype
df[['A',B']]=df.iloc[:,0:2]。应用(pd.to_numeric,errors='concurve')
将正确更新
dtype
。数据类型可能重复