【发布时间】: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/main.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
【问题讨论】: