我的代码中有一条声明:
df.loc[i] = [df.iloc[0][0], i, np.nan]
其中i
是我在此语句所在的for
循环中使用的迭代变量,np
是我导入的numpy模块,而df
是一个DataFrame看起来像:
build_number name cycles
0 390 adpcm 21598
1 390 aes 5441
2 390 dfadd 463
3 390 dfdiv 1323
4 390 dfmul 167
5 390 dfsin 39589
6 390 gsm 6417
7 390 mips 4205
8 390 mpeg2 1993
9 390 sha 348417
正如您所看到的,我的代码中的语句用于在我的DataFrame df
中插入新行,并使用{{填充cycles
下的最后一列(在新插入的行内) 1}}值。
然而,在这样做时,我收到以下警告信息:
NaN
查看文档,我仍然不明白我在这里遇到的问题或风险是什么。我认为使用/usr/local/bin/ipython:28: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
和loc
已遵循建议吗?
谢谢。
在这里编辑 在@EdChum的请求下,我添加了使用以下语句的函数:
iloc
答案 0 :(得分:0)
如果您只是想设置“周期”列,那么如果您不知道如何执行此操作,则以下内容可以正常工作而不会发出任何警告:
In [344]:
for i in range(len(df)):
df.loc[i,'cycles'] = np.nan
df
Out[344]:
build_number name cycles
0 390 adpcm NaN
1 390 aes NaN
2 390 dfadd NaN
3 390 dfdiv NaN
4 390 dfmul NaN
5 390 dfsin NaN
6 390 gsm NaN
7 390 mips NaN
8 390 mpeg2 NaN
9 390 sha NaN
如果您只想设置整个列,则无需循环执行此操作:df['cycles'] = np.NaN