Pandas无法避免设置复制警告

busg9geu  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(108)

我有一个 Dataframe ,如下所示:

A     B     C

15   'ds'   '    0.000'
32   'ds'   '    1.000'
56   'ds'   '    2,700.000'
45   'gb'   '    7.000'

我想把C列的值改为整数;所以我做的是这样的:

df.loc[:,'C'] = df.loc[:,'C'].apply(lambda x: int(float(x.strip().replace(',',''))))

这样做的工作,但是,我得到了恼人的SettingWithCopyWarning。为什么这出现,如果我使用loc

mu0hgdu0

mu0hgdu01#

Pandas在某些误报的情况下提出了这个警告(例如,根据分配的顺序,你 * 可能 * 分配给了一个副本,但在当前的场景中却没有)。How to deal with SettingWithCopyWarning in Pandas?
...但是,就我个人而言,当我使用.loc时,仍然会收到警告,我会采取上述答案中提供的步骤,并禁用警告:pd.options.mode.chained_assignment = None

pjngdqdw

pjngdqdw2#

我会使用以下方法:

In [292]: df['C'] = pd.to_numeric(df['C'].str.strip().str.replace(',', ''), errors='coerce')

In [293]: df
Out[293]:
    A   B       C
0  15  ds     0.0
1  32  ds     1.0
2  56  ds  2700.0
3  45  gb     7.0

In [294]: df.dtypes
Out[294]:
A      int64
B     object
C    float64
dtype: object

相关问题