首页 > 解决方案 > Python:去掉剩下的单词,只保留第一个单词

问题描述

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

代码:

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

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

标签: pythonpandas

解决方案


您可以通过使用删除重复项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]

如果性能很重要并且没有NaNs 值:

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

推荐阅读