【问题标题】:Adding a new column in python based on the value of another column pandas python根据另一列pandas python的值在python中添加一个新列
【发布时间】:2021-03-30 08:59:38
【问题描述】:

我正在尝试对这个数据集进行一些简单的操作。

我正在尝试:

  1. 计算归属于每个集群的总计数。例如,对于集群 0,我必须求和 7+4+61+7+12= 91
  2. 添加一个新列“总计数”,其中总计数与相应的簇成对出现(即,“簇”列中值为“0”的行,“簇”中的值为 91总计数列
  3. 将“计数”列除以“计数总数”并乘以 100(计算计数百分比)。结果应添加到新列中。

有人可以帮我写一个代码吗?

【问题讨论】:

    标签: python pandas count percentage


    【解决方案1】:
    1. 要计算归属于每个集群的总计数,请使用以下代码:

      total = df.groupby('clusters')['count'].sum().rename('total of counts')

    2. 要添加一个新列“总计数”,其中总计数与相应的集群成对出现,请使用以下代码:

      df = df.join(total, on='clusters', lsuffix='')

    3. 要将列“计数”除以“计数总数”并乘以 100,请使用以下代码:

      df['counts by total of counts'] = df['count']/df['total of counts']*100

    【讨论】:

    • 非常感谢!!这很简单也很有用。太棒了!
    【解决方案2】:

    假设您已将数据框称为 df,您可以执行以下操作:

    第 1 点 在 clusters 列上使用 groupby() 方法并使用 sum() 聚合方法计算总和,例如:

    df_grouped = df.groupby('clusters').sum()
    

    完成后,您可能希望将该数据框中的列重命名为更有用的名称,例如:

    df_grouped = df_grouped.rename(columns={'count': 'cluster_count'})
    

    第 2 点 要将总和返回到您的数据框中,您可以将 grouped_df 与原始数据框合并,例如:

    df_merged = pd.merge(left=df, 
                         right=df_grouped, 
                         left_on='clusters', 
                         right_index=True)
    

    使用“集群”列的位置是左侧数据框的键,并使用 df_grouped 数据框的索引(在第 1 点中的groupby() 操作之后,集群值将在索引中)。

    第 3 点 最后一步现在是微不足道的。只需使用您的最终数据框并添加一个包含所需计算结果的新列:

    df_merged['count_pct_cluster'] = df_merged['count'] / df_merged['cluster_count'] * 100
    

    【讨论】:

      【解决方案3】:

      您可以使用 这行代码将为您提供名为 total 的新列和 此列将是第 0 列到第 11 列值的平均值 在这里你可以用你需要的任何其他操作替换平均值

       df['total'] = df.iloc[:,:12].mean()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-16
        • 2021-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-29
        • 2020-11-26
        相关资源
        最近更新 更多