【发布时间】:2019-09-25 22:54:22
【问题描述】:
我正在处理一个奇怪的错误,这段代码之前可以运行(之前运行的代码,几个小时前),但现在不行了。
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
【问题讨论】:
-
请说明您的问题。另外,在您的情况下,“较早”是什么意思?
-
@Shijith : 问题在于 split() 而不是 lambda 函数
-
您看到的警告告诉您
df.iloc[i]['Text 2'] = set(row.split())可能实际上并未修改您的df。df.iloc[i]返回数据框的 view 并且该行的其余部分正在修改此视图(而不是原始数据框)。 -
@michcio1234 - '较早,表示代码的较早运行,编辑相同的问题