在熊猫数据框中具有某些条件的情况下对多列进行计算

时间:2019-04-23 01:52:22

标签: python sql python-3.x pandas dataframe

我的问题与上一个问题有关。但这是不同的。因此,即使数据相同,我也创建了一个新帖子。

我想对在熊猫数据框中具有某些条件的多列进行一些计算。

我的桌子:

 id1       date_time               adress       a_size       flag 
 reom      2005-8-20 22:51:10      75157.5413   ceifwekd      1 
 reom      2005-8-20  1:01:25      3571.37946   ceifwekd      1 
 reom      2005-8-20 11:21:01      3571.37946   tnohcve       0
 reom      2005-8-20  8:29:09      97439.219    tnohcve       0
 penr      2005-8-20  17:07:16     97439.219    ceifwekd      1
 penr      2005-8-20  9:10:37      7391.6258    ceifwekd      0

我需要通过“地址”获取标志== 1的百分比:

  df['ratio'] = df['address'].map(df.groupby('address').apply(lambda x: x[x['flag'] == 1].count() / x['flag'].count()))   

但是我得到了错误:

  TypeError: 'DataFrame' object is not callable

谢谢

3 个答案:

答案 0 :(得分:0)

只需使用df.groupby('address')['flag'].mean()

答案 1 :(得分:0)

我将transformmean一起使用

  df['ratio'] = df.groupby('address')['flag'].transform('mean')

答案 2 :(得分:0)

您可以尝试transform

df['ratio'] = df.groupby('address').transform(lambda x: x[x['flag'] == 1].count() / x['flag'].count())