Pandas 警告信息

Pandas Warning mesg

你能告诉我我的代码哪里错了吗?为什么我会收到此错误 mesg-

Reliance ['long_position'] = np.nan
for x in range (len (Reliance)):
    if Reliance.Close[x] > Reliance.SMA20[x]:
        Reliance['long_position'][x] = 1
    if Reliance.Close[x] <= Reliance.SMA20[x]:
        Reliance['long_position'][x] = 0

我正在计算 SMA20 并在其他代码部分关闭。 警告:试图在 DataFrame 的切片副本上设置一个值

详情请见下图

enter image description here

这里的问题在于索引。在 pandas 中,您应该使用 lociloc 进行索引。

Reliance ['long_position'] = np.nan
for x in range (len (Reliance)):
    if Reliance.Close.iloc[x] > Reliance.SMA20.iloc[x]:
        Reliance['long_position'].iloc[x] = 1
    if Reliance.Close.iloc[x] <= Reliance.SMA20.iloc[x]:
        Reliance['long_position'].iloc[x] = 0

根据文档,首选方式如下:

Reliance.iloc[x, 'long_position'] = 0

Pandas indexing

Setting with copy