Python:删除其余单词,仅保留第一个单词

时间:2018-12-11 06:24:53

标签: python pandas

我有一个数据框,其中包含带有重复字符串的列。我想取第一个单词,并从我所有的行中删除其余的单词。我使用了独特的方法,因为它返回了所有独特的价值,我只寻找行中单词的首次出现。

代码:

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]+', '')

这就是我所做的一切,对此的任何帮助都会很棒。

1 个答案:

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