【问题标题】:How to add the result of a divide function as a new column to the dataframe in Python?如何将除法函数的结果作为新列添加到 Python 中的数据框中?
【发布时间】:2022-09-27 14:00:42
【问题描述】:

我已经使用下面的代码计算了条件概率。现在我想将此计算的结果作为新列添加到我的数据框中。使用此代码可以实现吗?

df.groupby([\'mode\',\'income_level\'])[\'service\'].value_counts() / df.groupby([\'mode\',\'income_level\'])[\'service\'].count()

    标签: python pandas dataframe


    【解决方案1】:

    如果您的解决方案需要新列,请使用 DataFrame.join

    df = pd.DataFrame({'mode':list('aaaabbbb'),
                        'income_level':[5,5,5,0,5,0,0,0],
                        'service':[1,0] * 4})
    
    a = (df.groupby(['mode','income_level'])['service'].value_counts() / 
         df.groupby(['mode','income_level'])['service'].count())
    
    df = df.join(a.rename('new1'), on=['mode','income_level', 'service'])
    

    或者使用GroupBy.transform,而不是value_counts 将列添加到groupby 并使用GroupBy.size

    s1 = df.groupby(['mode','income_level', 'service'])['service'].transform('size') 
    s2 = df.groupby(['mode','income_level'])['service'].transform('count') 
    
    df['new'] = s1 / s2
    print (df)
      mode  income_level  service      new1       new
    0    a             5        1  0.666667  0.666667
    1    a             5        0  0.333333  0.333333
    2    a             5        1  0.666667  0.666667
    3    a             0        0  1.000000  1.000000
    4    b             5        1  1.000000  1.000000
    5    b             0        0  0.666667  0.666667
    6    b             0        1  0.333333  0.333333
    7    b             0        0  0.666667  0.666667
    

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多