我的代码的以下行导致警告:
import pandas as pd s = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD')) s.loc[-1] = [5,np.nan,np.nan,6] grouped = s.groupby(['A']) for key_m, group_m in grouped: group_m.loc[-1] = [10,np.nan,np.nan,10] C:\Anaconda3\lib\site-packages\ipykernel\__main__.py:10: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
根据文档,这是推荐的做法,所以发生了什么?
谢谢你的帮助.
文档有点令人困惑.
你dataframe
是另一个人的副本dataframe
.您可以通过运行验证这一点bool(df.is_copy)
您正在收到警告,因为您正在尝试分配给此副本.
警告/文档告诉您应该如何构建df
.现在它不是你应该如何分配给它的副本.
df = some_other_df[cols]
会df
复制一份some_other_df
.警告建议这样做
df = some_other_df.loc[:, [cols]]
现在已经完成,如果你选择忽略这个警告,你可以
df = df.copy()
要么
df.is_copy = None