解决"Copy of a Slice from a DataFrame"问题



下面是一个截取的代码,我喜欢在注释旁边解释。脚本的主要用途:打开/创建一个csv,并在最后一个位置继续脚本。在脚本运行时,请确保逐行写入数据帧,以便不会丢失任何已处理的数据。

data = pd.read_csv('input.csv', sep=',')
...
with open('output.csv', 'a+') as f:
# Continue script where it stopped last
pos = len(f.readlines()[1:])
data = data.iloc[pos:]
try:
# Get two values from a function, write into two columns
# progress_apply shows the progress (can be improved though)
data[['city', 'country']] = data.progress_apply(func, axis=1, result_type='expand')
# Append data to output.csv, but only add header for first entry
data.to_csv(f, mode='a', header=f.tell()==0, encoding='utf-8', index=False)
except:
print('Error at position {}.'.format(pos))
pass

脚本完成处理后,将打印:

SettingWithCopyWarning:正在尝试在 从数据帧切片。尝试使用 .loc[row_indexer,col_indexer] = 取值

我该如何解决问题,即代码有什么问题? 感谢您的帮助!

这是由于位置参数引起的警告,并导致链接分配,通常,警告指示操作可能未按预期工作。您可以通过在 loc[:] 之前添加以下行来设置警告,

pd.set_option('mode.chained_assignment', None)

最新更新