【问题标题】:Dropping duplicate records ignoring case忽略大小写删除重复记录
【发布时间】:2019-10-17 04:38:49
【问题描述】:

我有一个包含几列的数据框,其中之一是 company_name。我正在尝试删除基于具有相同公司名称的重复记录,但我不知道如何在保持公司名称的原始大小写的同时执行此操作。

我已尝试将所有名称转换为小写,然后删除重复项,但如前所述,我想保留原来的大小写。

df = pd.DataFrame({'company_name': ['Apple', 'apple', 'BlackBerry', 'blackberry','Blackberry'])
df['company_name'] = df['company_name'].str.strip()
df['company_name'] = df['company_name'].str.lower()
input_records.drop_duplicates(subset=['company_id'], inplace=True, 
   keep="first")

此代码消除了重复,但以全小写形式存储公司名称。

想要的结果

company_name
Apple
BlackBerry

实际结果

company_name
apple
blackberry

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以创建一个新列来执行您的操作。这将允许您保持公司名称列不变。

这是它的样子:

df = pd.DataFrame({'company_name':['Apple','apple','Blackberry','blackberry']})

company_name
0        Apple
1        apple
2   Blackberry
3   blackberry

df['company_name_2'] = df['company_name'].str.strip()
df['company_name_2'] = df['company_name_2'].str.lower()
df.drop_duplicates(subset=['company_name_2'], inplace=True, 
   keep="first")
df.drop(columns = 'company_name_2', inplace = True)
df.reset_index(inplace = True, drop = True)

输出:

    company_name
0   Apple
1   Blackberry

【讨论】:

  • 非常感谢!这非常有效。但是我确实改变了一件事,那就是将 df['company_name'].str.lower() 更改为 df['company_name_2].str.lower()
  • 你是对的,这是我的错误。我编辑了,谢谢指出
【解决方案2】:

duplicated怎么样

yourdf=df[~df.company_name.str.strip().str.lower().duplicated(keep='first')]
yourdf
Out[415]: 
  company_name
0        Apple
2   BlackBerry

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 2019-06-24
    • 2023-02-02
    • 1970-01-01
    • 2021-09-07
    • 2020-07-25
    • 1970-01-01
    • 2018-04-26
    • 2016-02-12
    相关资源
    最近更新 更多