【问题标题】:Python:Remove the rest of the words and only keep the first wordPython:去掉剩下的单词,只保留第一个单词
【发布时间】:2018-12-11 15:03:13
【问题描述】:

我有一个包含重复字符串的列的数据框。我想取第一个单词并从我拥有的所有行中删除其余单词。我使用了 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]+', '')

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

【问题讨论】:

  • 试试df.drop_duplicates(keep='first')你能发布一个示例数据框
  • 你能创建相同的样本数据并添加预期的输出吗?随意更改df = pd.DataFrame({'Category':['some way','nice', 'be happy', 'nice', 'yop man']})

标签: python pandas


【解决方案1】:

您可以使用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

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 1970-01-01
    • 2021-03-07
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多