pandas среднее значение для ряда в кусках размера 5 - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть фрейм данных в форме [100, 50000], и я хочу уменьшить его, применяя среднее значение для строки в блоках по 5. (Таким образом, я получу фрейм данных в форме [100, 10000]). Например, Итак, если строка

[1,8,-1,0,2 , 6,8,11,4,6]

, то результат будет

[2,7]

Какой самый эффективный способ сделать это?

Спасибо

1 Ответ

1 голос
/ 05 февраля 2020

Если форма 100, 50000 означает 100 rows and 50000 columns, решение - GroupBy.mean с помощником np.arange, созданным по длинам столбцов и axis=1:

df = pd.DataFrame([[1,8,-1,0,2 , 6,8,11,4,6],
                   [1,8,-1,0,2 , 6,8,11,4,6]])
print (df)
   0  1  2  3  4  5  6   7  8  9
0  1  8 -1  0  2  6  8  11  4  6
1  1  8 -1  0  2  6  8  11  4  6

print (df.shape)
(2, 10)

df = df.groupby(np.arange(len(df.columns)) // 5, axis=1).mean()
print (df)
   0  1
0  2  7
1  2  7

Если форма 100, 50000 означает 100 columns and 50000 rows, решение - GroupBy.mean с помощником np.arange, созданным по длинам DataFrame:

df = pd.DataFrame({'a': [1,8,-1,0,2 , 6,8,11,4,6],
                   'b': [1,8,-1,0,2 , 6,8,11,4,6]})
print (df)
    a   b
0   1   1
1   8   8
2  -1  -1
3   0   0
4   2   2
5   6   6
6   8   8
7  11  11
8   4   4
9   6   6

print (df.shape)
(10, 2)

df = df.groupby(np.arange(len(df)) // 5).mean()
print (df)
   a  b
0  2  2
1  7  7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...