我正在解决一个奇怪的错误,该代码可以更早地工作(更早的代码运行,几小时后),但现在却不能。
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
答案 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。