在pandas数据帧中对某些条件进行多列计算

问题描述 投票:0回答:3

我的问题与我之前的问题有关。但它是不同的。所以,即使数据相同,我也创建了一个新帖子。

我想在pandas数据帧中对一些条件进行一些计算。

我的桌子:

 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

我需要通过“地址”获得flag == 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

谢谢

python sql python-3.x pandas dataframe
3个回答
0
投票

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


0
投票

我将使用transformmean

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

0
投票

你可以尝试transform

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

© www.soinside.com 2019 - 2024. All rights reserved.