Split()无法按预期方式工作#SettingWithCopyWarning,无法理解错误

时间:2019-05-08 08:44:16

标签: python dataframe

我正在解决一个奇怪的错误,该代码可以更早地工作(更早的代码运行,几小时后),但现在却不能。

import numpy as np   
import pandas as pd 
​df = pd.read_csv('nlp_monta.csv') 
df['Text 2'] = pd.Series(map(lambda x: str(x).replace("^"," "), df['Text']))
​i=0;
for row in df['Text 2']:
    df.iloc[i]['Text 2'] = set(row.split())    # This isn't giving unique words 
    i=i+1                                      #earlier it was 

警告,尽管代码有效-Image of results

  

C:\ Users \ ishanna \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-> packages \ ipykernel_launcher.py:2:SettingWithCopyWarning:   试图在DataFrame的切片副本上设置一个值

     

请参阅文档中的警告:http://pandas.pydata.org/pandas-> docs / stable / indexing.html#indexing-view-versus-copy

1 个答案:

答案 0 :(得分:0)

如评论中所述,问题似乎出在df.iloc[i]['Text 2'] = set(row.split())上。

SettingWithCopyWarning告诉您df.iloc[i]可能会返回您数据框的视图,而该行的其余部分正在修改此视图(而不是原始数据框)。

遍历行很少是一个好主意。相反,您可以尝试另一个map(尽管我没有测试过):

df['Text 2'] = df['Text 2'].str.split().map(set)

了解字符串访问器here