Python pandas SettingWithCopyWarning

时间:2015-09-07 11:07:05

标签: python pandas dataframe

我想知道为什么第一个代码(从CSV读取数据)有一条警告消息SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame,而第二个代码(使用相同的逻辑但是手动DataFrame初始化)没有此警告消息。< / p>

代码#1

import pandas as pd

myData = pd.read_csv('https://spark-public.s3.amazonaws.com/dataanalysis/loansData.csv')

for i in range(len(myData['Employment.Length'])):
    myData['Employment.Length'][i] = 3

代码#2

list1 = ['bla', 'la', 'lal']    
list2 = [1, 2, 3]      
myData = pd.DataFrame({'1': list1, '2':list2})  

for i in range(len(myData)):  
    myData['1'][i] = 3  

1 个答案:

答案 0 :(得分:1)

以上代码都会生成相同的警告。当两个代码在同一个python应用程序/控制台中运行时,警告会生成两次(每个代码一次),但由于警告过滤器设置为一次

  

一次:只打印第一次匹配的警告,无论如何   位置。
  始终:始终打印匹配警告

参考documentation

要更改此行为,请将警告过滤器设置为始终

import warnings
warnings.filterwarnings("always")