从熊猫数据框的每一行中删除字符(^),并在每一行中获取唯一的单词

时间:2019-05-07 11:42:59

标签: python

我想在数据帧[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...

1 个答案:

答案 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)

当然,除了打印以外,您还可以将它们添加到列表中,具体取决于您要对这些独特的单词进行处理。