У меня есть dataframe так:Как вычислить среднее из n последовательных столбцов?
import pandas as pd
df = pd.DataFrame({'A_1': [1, 2], 'A_2': [3, 4], 'A_3': [5, 6], 'A_4': [7, 8],
'B_1': [0, 2], 'B_2': [4, 4], 'B_3': [9, 6], 'B_4': [5, 8]})
A_1 A_2 A_3 A_4 B_1 B_2 B_3 B_4
0 1 3 5 7 0 4 9 5
1 2 4 6 8 2 4 6 8
, который я хотел бы преобразовать в dataframe который выглядит следующим образом:
A_G1 A_G2 B_G1 B_G2
0 2 6 2 7
1 3 7 3 7
Таким образом, A_G1
является mean
колонн A_1
и A_2
, A_G2
- mean
колонн A_3
и A_4
; то же самое относится к B_G1
и B_G2
. Так что я хотел бы сделать, это вычислить среднее из двух последовательных столбцов и добавить результат в виде нового столбца в фреймворк данных.
Непосредственная реализация может выглядеть следующим образом:
res_df = pd.DataFrame()
for i in range(0, len(df.columns), 2):
temp_df = df[[i, i + 1]].mean(axis=1)
res_df = pd.concat([res_df, temp_df], axis=1)
, который дает мне желаемый результат (для имен столбцов, за исключением):
0 0 0 0
0 2 6 2 7
1 3 7 3 7
Есть ли лучший способ сделать это т.е. векторизованным способом?
Работает отлично, спасибо! Напротив, теперь он может принять его позже, если ничего лучше не появится. – Cleb
@Cleb Просто понял, что в этом случае вам тоже не нужна «dropna». –
Быстрый вопрос: предположим, что есть также 'A_5' и' A_6' и 'B_5' и' B_6'; как нужно изменить команду? Изменение 'окна' до 3 и использование' 1 :: 3' не сработало. – Cleb