【问题标题】:Removing duplicates with ignoring case sensitive and adding the next column values with the first one in pandas dataframe in python删除重复项并忽略大小写敏感,并在 python 的 pandas 数据框中添加下一列值和第一个值
【发布时间】:2018-04-16 03:32:10
【问题描述】:

我有一个 df,

Name    Count
Ram     1
ram     2
raM     1
Arjun   3
arjun   4

我想要的输出df,

Name    Count
Ram     4
Arjun   7

我尝试了 groupby 但我无法达到所需的输出,请帮助

【问题讨论】:

    标签: python pandas dataframe data-analysis


    【解决方案1】:

    Names 的值转换为lower - firstsum 使用agg

    df = (df.groupby(df['Name'].str.lower(), as_index=False, sort=False)
            .agg({'Name':'first', 'Count':'sum'}))
    print (df)
        Name  Count
    0    Ram      4
    1  Arjun      7
    

    详情:

    print (df['Name'].str.lower())
    0      ram
    1      ram
    2      ram
    3    arjun
    4    arjun
    Name: Name, dtype: object
    

    【讨论】:

    • 如果其值在同一列中如何应用
    • 嗯,我有个主意。但问题是如果第一行是 RAM 1 在数据中你需要输出 Ram 4 吗?是否可以RAM a, Ram A, rAM a 值然后输出Ram a 4
    • 看来你需要df1 = pd.DataFrame({'Name' : ['RAM a','ram a','ram a','raM a','Arjun','Arjun','Arjun','arjun','arjun','arjun','arjun']}) - ` a = df1['Name'].groupby(df1['Name'].str.title()).size().reset_index(name ='Count')` 或a = df1['Name'].groupby(df1['Name'].str.capitalize()).size().reset_index(name='Count')
    【解决方案2】:
    In [71]: df.assign(Name=df['Name'].str.capitalize()).groupby('Name', as_index=False).sum()
    Out[71]:
        Name  Count
    0  Arjun      7
    1    Ram      4
    

    【讨论】:

      【解决方案3】:

      如果我按title 格式化字符串分组,它会简化我必须采取的步骤。

      df.Count.groupby(df.Name.str.title()).sum().reset_index()
      

      【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2016-11-18
      • 2011-06-11
      • 1970-01-01
      相关资源
      最近更新 更多