【问题标题】:How to remove duplicate string from each row in a column如何从列中的每一行中删除重复的字符串
【发布时间】:2023-02-02 22:43:48
【问题描述】:

我有一列包含一堆用逗号分隔的 4 位数字。有些包含重复的 4 位数字组。例如,1 行看起来像这样:

1400, 1400, 1400, 1455, 1455, 1455, 1670, 1670, 1670

我正在尝试将其更改为:

1400, 1455, 1670

我想将其应用于列中的所有行。我能够从这里的另一个问题中得到这个。

df['ID'] = df['ID'].apply(lambda x: list(set(x)))

但是,这只是将其过滤为唯一的个位数,如下所示:

1,4,0,5,6,7

如何调整代码以使其工作?

【问题讨论】:

  • 我猜你的专栏内容是字符串类型。然后它根据其中的字符创建集合(但这并不能解释它过滤到唯一的单个数字,它还应该显示','和'')

标签: python pandas


【解决方案1】:

一种选择是将 mapjoin 一起使用。但在此之前,请确保split

df["ID"] = df["ID"].str.split("s*,s*").map(set).str.join(", ")

的 输出 :

print(df)
                 ID
0  1455, 1400, 1670

【讨论】:

  • 我真的很喜欢"s*,s*":-)
【解决方案2】:

为了保持“ID”的顺序,您可以在从字符串中提取数字后使用np.unique

df['ID'] = df['ID'].str.findall('d+').map(np.unique).str.join(', ')
print(df)

# Output
0    1400, 1455, 1670
Name: ID, dtype: object

【讨论】:

    猜你喜欢
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2011-12-17
    • 1970-01-01
    • 2023-01-08
    • 2019-05-05
    相关资源
    最近更新 更多