Среднее значение столбцов DataFrame на основе расширения имени столбца - PullRequest
1 голос
/ 22 марта 2019

У меня есть датафрейм A в Юпитере, который выглядит следующим образом

Index Var1.A.1  Var1.B.1  Var1.CA.1  Var2.A.1  Var2.B.1  Var2.CA.1
0      1         21         3          3         4        4 
1      3         5          4          9         5        1
....
100    9         75        2           4         8        2

Я бы хотел оценить среднее значение на основе расширения имени, т. Е.

  • Среднее значение .A.1
  • Среднее значение .B.1
  • Среднее значение .CA.1

Например, чтобы оценить среднее значение переменной с расширением .A.1, я попробовал следующее, которое не возвращает то, что я ищу

List=['.A.1', '.B.1', '.CA.1']
A[List[List.str.contains('.A.1')]].mean() 

Тем не менее, таким образом, я получаю средние значения различных переменных, получая также CA.1, а это не то, что он ищет.

Любой совет?

спасибо

Ответы [ 3 ]

1 голос
/ 22 марта 2019

Если хотите mean для строк по всем значениям после первого ., используйте groupby с лямбда-функцией и mean:

df = df.groupby(lambda x: x.split('.', 1)[-1], axis=1).mean()
print (df)
     A.1   B.1  CA.1
0    2.0  12.5   3.5
1    6.0   5.0   2.5
100  6.5  41.5   2.0
1 голос
/ 22 марта 2019

Вот третий вариант:

columns = A.columns
A[[s for s in columns if ".A.1" in s]].stack().reset_index().mean() 
0 голосов
/ 22 марта 2019

dfA.filter(like='.A.1') - возвращает столбец, содержащий подстроку '.A.1'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...