【问题标题】:How to remove duplicates from a dataframe column with more than one value? [closed]如何从具有多个值的数据框列中删除重复项? [关闭]
【发布时间】:2020-02-03 01:25:25
【问题描述】:

数据:

我想在不删除行的情况下从“Borough”中删除重复项,我只需要一个值

g2 = dfff.groupby(['Postcode'])["Borough"].agg( ','.join)
g3 = dfff.groupby(['Postcode'])["Neighbourhood"].agg( ','.join)
df2=pd.DataFrame(g2)
df3=pd.DataFrame(g3)
df4 = pd.merge(df2, df3, on='Postcode')

【问题讨论】:

  • 欢迎来到 SO。请查看How to Ask 并创建minimal reproducible example。如果你连问一个问题都不愿意付出任何努力,你怎么能指望别人帮助你呢?
  • df.drop_duplicate()?这应该适合你的情况。或者详细解释您期望的输出。
  • 我试过了,但它删除了整行,我需要(“Borough”:newyork,newyork)的行只有一个值(一个地方)而不是两个
  • Stack Overflow Discourages Screenshots。由于包含不必要的屏幕截图,该问题可能会被否决。通过使用屏幕截图,您会阻止任何人为您提供帮助。没有人愿意通过屏幕截图重新输入您的内容,而且屏幕截图通常不可读。

标签: python python-3.x pandas dataframe data-science


【解决方案1】:

试试这个:

# setup
df = pd.DataFrame({
    "data": ['scarborough, scarborough, scarborough', 'london,london', 'north york, north york', 'test,test']
})

# logic
def custom_dedup(s):
    return [*set([_.strip() for _ in s.split(',')])][0]

df['data'].apply(custom_dedup)

它是如何工作的

  1. split():用逗号分割字符串,得到一个列表
  2. strip():从列表中的每个字符串中删除外部空格
  3. set():从该列表中获取唯一元素
  4. ...[0]:我们假设每个集合只有一个元素,所以取第一个元素

输入:

    data
0   scarborough, scarborough, scarborough
1   london,london
2   north york, north york
3   test,test

输出:

0    scarborough
1         london
2     north york
3           test

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 2021-06-09
    • 2014-06-08
    • 2019-10-12
    • 1970-01-01
    • 2020-02-18
    • 2018-07-15
    • 2020-05-15
    相关资源
    最近更新 更多