我的问题与上一个问题有关。但这是不同的。因此,即使数据相同,我也创建了一个新帖子。
我想对在熊猫数据框中具有某些条件的多列进行一些计算。
我的桌子:
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
谢谢
答案 0 :(得分:0)
只需使用df.groupby('address')['flag'].mean()
。
答案 1 :(得分:0)
我将transform
与mean
一起使用
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())