【问题标题】:Dataframe find out duplicate values in column based on other columns, and then add label in to it数据框根据其他列找出列中的重复值,然后在其中添加标签
【发布时间】:2020-03-15 11:18:47
【问题描述】:

给定以下数据框:

 import pandas as pd
 d=pd.DataFrame({'ID':[1,1,1,1,2,2,2,2],
           'values':['a','b','a','a','a','a','b','b']})
 d
    ID  values
 0   1    a 
 1   1    b 
 2   1    a 
 3   1    a 
 4   2    a 
 5   2    a 
 6   2    b 
 7   2    b 

我要获取的数据是:

    ID  values count label(values + ID)
 0   1    a      3     a11 
 1   1    b      1     b11 
 2   1    a      3     a12 
 3   1    a      3     a13 
 4   2    a      2     a21 
 5   2    a      2     a22 
 6   2    b      2     b21  
 7   2    b      2     b22 

非常感谢!!!!!!!!!!!!!!!!!!!!!

【问题讨论】:

  • 如何实现这样的功能?非常感谢!!!

标签: python-3.x pandas duplicates conditional-statements unique


【解决方案1】:

您想按IDvalues 分组。在每个组中,您对两件事感兴趣:组中的成员数 (count) 和组内的出现次数 (order):

df['order'] = df.groupby(['ID', 'values']).cumcount() + 1
df['count'] = df.groupby(['ID', 'values']).transform('count')

然后您可以使用sum 连接它们的字符串值以及values

df['label'] = df[['values', 'ID', 'order']].astype(str).sum(axis=1)

这会导致:

   ID values  order  count label
0   1      a      1      3   a11
1   1      b      1      1   b11
2   1      a      2      3   a12
3   1      a      3      3   a13
4   2      a      1      2   a21
5   2      a      2      2   a22
6   2      b      1      2   b21
7   2      b      2      2   b22

【讨论】:

    【解决方案2】:

    看来你需要transform count + cumcount

    d['count']=d.groupby(['ID','values'])['values'].transform('count')
    d['label']=d['values']+d.ID.astype(str)+d.groupby(['ID','values']).cumcount().add(1).astype(str)
    d
    Out[511]: 
       ID values  count label
    0   1      a      3   a11
    1   1      b      1   b11
    2   1      a      3   a12
    3   1      a      3   a13
    4   2      a      2   a21
    5   2      a      2   a22
    6   2      b      2   b21
    7   2      b      2   b22
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      相关资源
      最近更新 更多