Pandas: группировать строки фильтров, получать среднее значение

Измените свой метод действий, чтобы включить атрибут Bind Prefix / свойство

public JsonResult CheckEmailExist([Bind(Prefix="ms_person.email")]string email)
{
  ...
0
задан Gabriel Macotti 13 July 2018 в 13:43
поделиться

2 ответа

Используйте ~ для инвертирования False s до True s для фильтрации по False s по boolean indexing :

print (df[~df["Geo"]])
    ID    Geo  Speed
0  123  False     40
3  123  False     50
5  456  False     10
7  456  False     40

df = df[~df["Geo"]].groupby('ID', as_index=False).Speed.mean()
print (df)
    ID  Speed
0  123     45
1  456     25

И для фильтрации True s:

print (df[df["Geo"]])
    ID   Geo  Speed
1  123  True     90
2  123  True     80
4  123  True     10
6  456  True     90
8  456  True     80

df = df[df["Geo"]].groupby('ID', as_index=False).Speed.mean()
print (df)
    ID  Speed
0  123     60
1  456     85
3
ответ дан jezrael 17 August 2018 в 12:41
поделиться
  • 1
    Спасибо за ваш ответ! – Gabriel Macotti 13 July 2018 в 13:56
  • 2
    @GabrielMacotti - хорошая идея, если возможно, другие значения как True и False s, если лучше использовать только логическое значение ~ – jezrael 13 July 2018 в 14:00

Используя pivot_table, теперь вы получаете как True, так и False

df.pivot_table('Speed','ID','Geo',aggfunc='mean')
Out[154]: 
Geo  False  True 
ID               
123     45     60
456     25     85
1
ответ дан Wen 17 August 2018 в 12:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: