从panda数据帧的每一行中删除一个字符(^),并在每一行中获得唯一的单词

2024-10-01 02:22:38 发布

您现在位置: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...

Tags: 数据textiddffornan空格cotton
1条回答
网友
1楼 · 发布于 2024-10-01 02:22:38

关于替换,您很接近。
这应该起作用:

df['Text 2'] = pd.Series(map(lambda x: str(x).replace("^"," "), df['Text']))

在python3 map中创建生成器时,必须运行生成器才能得到结果。通常您可以执行list(map(...)),但在本例中,pandas.Series更可取,因为您需要创建一个dataframe列。你知道吗

我还需要将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)

当然,您可以将它们添加到列表中,而不是打印,这取决于您想对这些独特的单词执行什么操作。你知道吗

相关问题 更多 >