我想在数据帧[df]的每一行中将'^'替换为''(空格),然后在每一行中找到唯一的单词。
谢谢
ID Text
0 B07HFHF2ZM NaN
1 B07HFK5V4K handloom saree^handloom cotton sarees^bengal h...
2 B07HFKHRTL tantuja bengal handloom sarees^handloom saree^...
3 B07HFKLPL5 handloom sarees cotton bengal^bengal cotton sa...
4 B07HFKXWW3 cotton saree^bengal cotton sarees for women^ta...
5 B07HFL8J2D tantuja bengal handloom sarees^handloom saree^...
6 B07HZY27MF cotton saree^tantuja bengal handloom sarees^co...
7 B07HZZCH28 tantuja^tantuja bengal handloom sarees^cotton ...
8 B07J163MGJ tangail saree handloom cotton^black cotton sar...
9 B07J191MR4 tantuja saree^bengal cotton sarees for women^b...
答案 0 :(得分:2)
关于更换,您很亲密。
这应该起作用:
df['Text 2'] = pd.Series(map(lambda x: str(x).replace("^"," "), df['Text']))
在python3 map
中创建一个生成器,您必须运行该生成器才能获取结果。通常,您可以执行list(map(...))
,但在这种情况下,最好使用pandas.Series
,因为您要创建数据框列。
我还需要将x.str.replace
更改为str(x).replace
以使其正常运行,并且需要将"c"
更改为" "
。如果需要空格,请使用空格,而不是'c'字符。
要查找唯一的单词,可以使用Counter:
from collections import Counter
for row in df['Text2']:
wordcounter = Counter(row.split())
for w, i in wordcounter.items():
if i == 1:
print(w, end=' ')
print('')
这将为每行打印所有唯一的单词(出现一次的单词)。
如果您需要所有单词(只需跳过重复单词),则可以改用set。
for row in df['Text2']:
wordcounter = set(row.split())
print(wordcounter)
当然,除了打印以外,您还可以将它们添加到列表中,具体取决于您要对这些独特的单词进行处理。