我有一个数据框,其中包含带有重复字符串的列。我想取第一个单词,并从我所有的行中删除其余的单词。我使用了独特的方法,因为它返回了所有独特的价值,我只寻找行中单词的首次出现。
代码:
import pandas as pd
import numpy as np
import re
df=pd.read_csv("file name")
new_data=df['Category'].unique()
changed_data=df['Category'].str.replace('[^a-zA-Z]+', '')
这就是我所做的一切,对此的任何帮助都会很棒。
答案 0 :(得分:0)
您可以使用split
并通过使用drop_duplicates
进行索引来删除重复项来选择列表的第一个值:
changed_data=df['Category'].drop_duplicates().str.split().str[0]
也可以仅按第一个空格分割:
changed_data=df['Category'].drop_duplicates().str.split(n=1).str[0]
如果性能很重要并且没有NaN
的值:
changed_data= pd.Series([x.split()[0] for x in df['Category'].drop_duplicates(),
index=df.index)
示例:
df = pd.DataFrame({'Category':['some way','nice', 'yop yop m',
'be happy', 'nice', 'yop man']})
print (df)
Category
0 some way
1 nice
2 yop yop m
3 be happy
4 nice
5 yop man
首先删除重复项,然后得到第一个单词:
changed_data=df['Category'].drop_duplicates().str.split().str[0]
print (changed_data)
0 some
1 nice
2 yop
3 be
5 yop
Name: Category, dtype: object
或者首先得到第一个单词,然后删除重复项:
changed_data=df['Category'].str.split().str[0].drop_duplicates()
print (changed_data)
0 some
1 nice
2 yop
3 be
Name: Category, dtype: object