Среднее значение питона панды по значениям подряд - PullRequest
0 голосов
/ 24 мая 2018

У меня есть фрейм данных с несколькими строками, аналогичными показанным ниже:

  wave      cross cross2
0 299.0   1.25    3.30
1 299.5   1.30    4.20
2 300.0   1.45    4.36
3 300.5   1.65    4.32
4 300.8   1.56    4.56

Что я хочу сделать - это усреднить данные для тех же длин волн, чтобы получить фрейм данных с волнойкак целое число, что приводит к чему-то вроде этого:

  wave   cross cross2
0 299    1.30  3.75
1 300    1.55  4.41

Каков наилучший способ достичь этого с помощью Python панды?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

В дополнение к замечательным альтернативам Джезраэля вы можете передать столбец в groupby:

df = df.groupby(df['wave'].astype(int)).mean().drop('wave',1).reset_index()

Полный пример:

import pandas as pd

data = '''\
wave      cross cross2
299.0   1.25    3.30
299.5   1.30    4.20
300.0   1.45    4.36
300.5   1.65    4.32
300.8   1.56    4.56'''

df = pd.read_csv(pd.compat.StringIO(data), sep='\s+')

df = df.groupby(df['wave'].astype(int)).mean().drop('wave',1).reset_index()
print(df)

Возвращает:

   wave     cross    cross2
0   299  1.275000  3.750000
1   300  1.553333  4.413333
0 голосов
/ 24 мая 2018

Используйте groupby с агреагатом mean, но сначала приведите столбец wave к int:

df = df.assign(wave = df['wave'].astype(int)).groupby('wave').mean()

Или:

df['wave'] = df['wave'].astype(int)
df = df.groupby('wave').mean()

Или:

df = df[df.columns.difference(['wave'])].groupby(df['wave'].astype(int)).mean()

print (df)
         cross    cross2
wave                    
299   1.275000  3.750000
300   1.553333  4.413333
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...