【问题标题】:Python - Remove duplicate in cell of datafeamePython - 删除数据框单元格中的重复项
【发布时间】:2018-11-20 06:50:24
【问题描述】:

我在 datafrme 结构中有一个列:

df = pd.DataFrame({'Config': ['1A', '1A, 7A', '3C, 3C-7A', '1A, 3A, 1A-3A']})
print(df)

          Config
0             1A
1         1A, 7A
2      3C, 3C-7A
3  1A, 3A, 1A-3A

如果单元格中有XX-XX,请删除重复的上一项。
例如,在第 2 行和第 3 行将删除 3C1A3A(或创建一个新列):

   Config
0      1A
1  1A, 7A
2   3C-7A
3   1A-3A

非常感谢。


更新问题:

原始数据帧:

df = pd.DataFrame({'Config': ['1A', '1A, 7A', '3C, 3C-7A', '1A, 3A, 1A-3A', '5A, 3C-7A']})
df

          Config
0             1A
1         1A, 7A
2      3C, 3C-7A
3  1A, 3A, 1A-3A
4      5A, 3C-7A

目标:

      Config
0         1A
1     1A, 7A
2      3C-7A
3      1A-3A
4  5A, 3C-7A

说明:

在第 2 行和第 3 行中:
3C3C-7A 重复
1A3A1A-3A 重复
所以删除3C1A3A

在第 4 行: 因为5A3C-7A 中的值不重复,所以5A3C-7A 两个值都保留。

【问题讨论】:

  • StackOverflow 不是代码编写服务。请通读Help Center,尤其是How do I ask a good question? 如果您遇到特定问题,请彻底研究,在这里彻底搜索,如果您仍然卡住,请发布您的代码和问题描述。另外,请记住包括Minimum, Complete, Verifiable Example。人们会很乐意提供帮助
  • 谢谢提醒,下次注意
  • 每个“单元格”都是一个字符串,只是您用来创建df 的列表。如果您编写一个返回干净字符串的字符串处理函数,您可以轻松地将其应用于 souse 列表(列表理解)或单元格。

标签: python pandas numpy dataframe


【解决方案1】:

如果您的数据遵循相同的位置,那么它将为您工作,

df.loc[df['Config'].str.contains('-'),'Config']=df['Config'].str.split(',').str.get(-1)

输出:

   Config
0      1A
1  1A, 7A
2   3C-7A
3   1A-3A

解释:

它将按, 拆分值并取其最后一个值,即系列中的-

EDIT-1

print df['Config'].str.split(', |-').apply(set)

Output:

0            {1A}
1        {1A, 7A}
2        {3C, 7A}
3        {1A, 3A}
4    {3C, 5A, 7A}

【讨论】:

  • 这是在检查/比较值吗?
  • @pygo - 对不起,我没听懂你
  • 是否在行内检查重复项
  • @pygo - 在这个问题中,一个名为 duplicate 的词指的是旧值。例如,此值1A 中的1A, 3A, 1A-3A3A 是重复的,因为它在下一个值处具有组合1A-3A。我希望你得到清除:-)
  • @xiumpt - 你想比较什么值?你能提供一个样品吗?上面的 sn-p 实际上并没有比较它采用最后一个(最新)值。
猜你喜欢
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2013-03-07
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2020-11-07
相关资源
最近更新 更多