我想知道为什么第一个代码(从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
答案 0 :(得分:1)
以上代码都会生成相同的警告。当两个代码在同一个python应用程序/控制台中运行时,警告会生成两次(每个代码一次),但由于警告过滤器设置为一次
一次:只打印第一次匹配的警告,无论如何 位置。
始终:始终打印匹配警告
要更改此行为,请将警告过滤器设置为始终
import warnings
warnings.filterwarnings("always")