【问题标题】:I assign list of values to a new column and getting the warning SettingWithCopyWarning:我将值列表分配给新列并收到警告 SettingWithCopyWarning:
【发布时间】:2019-10-05 18:07:31
【问题描述】:

我有一个数据框,其中包含 2015 年的月份和日期。我将年初至今的值计算到一个列表中。我将此列表分配给数据框中的一个新列,但收到一条警告 SettingWithCopyWarning。我该如何解决它以及为什么会发生这种情况的一些解释。提前谢谢大家。

print(dfabovemax.head())
print(dfabovemax.tail())
      MaxTemp  Data_Value
Mon-Date                     
01-02         114         113
01-10         142         126
04-10         213         203
04-15         246         228
05-03         203         195
      MaxTemp  Data_Value
Mon-Date                     
01-02         114         113
01-10         142         126
04-10         213         203
04-15         246         228
05-03         203         195

fmt = '%Y-%m-%d'
ytodt2 = []

for i in dfabovemax.index:
    s='2005-{}'.format(i)
    dt = datetime.datetime.strptime(s, fmt)
    tt = dt.timetuple()
    ytodt2.append(tt.tm_yday)

dfabovemax['YtoDt'] = list(ytodt2)

我收到警告

/opt/conda/lib/python3.6/site-packages/ipykernel/ma​​in.py:14:SettingWithCopyWarning: 试图在 DataFrame 中的切片副本上设置一个值。 尝试改用 .loc[row_indexer,col_indexer] = value

请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

print(dfabovemax.head())
print(dfabovemax.tail())

     MaxTemp  Data_Value  YtoDt
Mon-Date                            
01-02         114         113      2
01-10         142         126     10
04-10         213         203    100
04-15         246         228    105
05-03         203         195    123
      MaxTemp  Data_Value  YtoDt
Mon-Date                            
12-25         140         135    359
12-26         152         130    360
12-27         138         118    361
12-28         134         124    362

12-30 134 128 364

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    尝试在数据框副本上设置值时,您经常会收到此警告。您的代码中唯一可能发生这种情况的地方是

    dfabovemax['YtoDt'] = list(ytodt2)
    

    这意味着,dfabovemax 很可能是另一个数据帧的结果。在 python 中, dfabovemax 仍然引用它的原始数据帧。为了纠正这种情况,请在制作 dfabovemax 时使用 copy()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      相关资源
      最近更新 更多