我的问题与我之前的问题有关。但它是不同的。所以,即使数据相同,我也创建了一个新帖子。
我想在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
谢谢
只需使用df.groupby('address')['flag'].mean()
。
我将使用transform
和mean
df['ratio'] = df.groupby('address')['flag'].transform('mean')
你可以尝试transform
:
df['ratio'] = df.groupby('address').transform(lambda x: x[x['flag'] == 1].count() / x['flag'].count())