【发布时间】:2019-04-29 00:36:35
【问题描述】:
运行以下代码时:
import pandas as pd
df = pd.DataFrame({"A": [1,2,3],"B": [2,4,8]})
df2 = df[df["A"] < 3]
df2["C"] = 100
我收到以下警告:
SettingWithCopyWarning:一个值 正在尝试在 DataFrame 中的切片副本上设置。尝试使用 .loc[row_indexer,col_indexer] = value 参见 文档: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
但这正是我想要的行为(真正的桌子很大,我不想复制它),为什么我会收到警告?为什么会有风险?
df
A B
0 1 2
1 2 4
2 3 8
df2
A B C
0 1 2 100
1 2 4 100
【问题讨论】:
-
因为
df2是df切片的副本。试试:df2 = df[df["A"] < 3].copy() -
它是一个非常大的DataFrame,我不想对其进行处理,为什么使用视图有风险?
-
您只是在复制切片,但如果您不想复制,请使用
loc。
标签: pandas