我的代码的目标是用过滤后的版本覆盖数据帧。以下代码返回下面的警告:
代码:
df = df[df.col>1]
df.col2 = df.col2.astype(float)
错误:
/root/.virtualenvs/data_tools/local/lib/python2.7/site-packages/pandas/core/generic.py:2177: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
理论:
错误发生在第二行,但仅当第一行之前运行时才会发生。我相信第一行正在创建与原始文件同名的 df 副本,这会导致错误。但我不明白为什么。
模块版本:
numpy==1.10.1
Pandas ==0.16.2
最佳答案
杰夫指出的问题是我正在制作 View 而不是数据框的副本。
这是我应该写的:
df = df[df.col>1].copy(deep=True)
df.col2 = df.col2.astype(float)
关于python - 使用Pandas Dataframe过滤功能后的SettingWithCopyWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175702/