将pandas dataframe中的列从float转换为int

时间:2017-09-27 03:13:09

标签: python pandas

当我想执行以下命令(从其他问题中学习)时,会出现警告。如何避免这种警告?

df['Class'] = df['Class'].astype(int)

/home/ubuntu/src/anaconda3/lib/python3.5/site-packages/ipykernel/ main .py:2:SettingWithCopyWarning: 尝试在DataFrame的切片副本上设置值。 尝试使用.loc [row_indexer,col_indexer] = value而不是

请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy   来自ipykernel导入kernelapp作为app

2 个答案:

答案 0 :(得分:1)

您需要禁用链式分配。

# Disable chained assignments
pd.options.mode.chained_assignment = None 

会使它发挥作用。

答案 1 :(得分:0)

我建议您采用这种方式,而不是更改配置,尽管这会占用更多资源。具有足够的内存或小尺寸的数据,没关系。

df_ = df.copy()
df_['Class'] = df_['Class'].astype(int)

仅供参考

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.copy.html https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#indexing-view-versus-copy