Есть ли способ сделать панды корреляции между несколькими столбцами и создать новый столбец с результатом на том же кадре данных? - PullRequest
0 голосов
/ 02 января 2019

Я устанавливаю фрейм данных pandas df1 и создаю новый столбец на основе формул из листа Excel.Мне нужно использовать функцию pd.corr, чтобы найти корреляцию между несколькими столбцами и использовать результаты для создания нового столбца на одном и том же кадре данных df1.

выборка df1 данные:

trc_2017  trc_2016  trc_2015  tsr_2017 tsr_2016 tsr_2015  roe   
0.21      1.23      2.54      9.42     6.14     -0.01     2.35
1.02      -3.21      0.12     9.32     5.24     6.90      3.29 
-3.02      0.12      1.32     5.02     2.02     32.10     4.32

Пробовал эти решения:

df['corr'] = df[['trc_2017', 'trc_2016', 'trc_2015']].corr(df[['tsr_2017', 'tsr_2016', 'tsr_2015']])

решение выше, но я получаю ошибку:

ValueError: The truth value of a DataFrame is ambiguous.

второе решение:

df['corr'] = df[['trc_2017', 'trc_2016', 'trc_2015']].corrwith(df[['tsr_2017', 'tsr_2016', 'tsr_2015']])

дает все значение df['corr'] is NaN

Ожидаемые результаты:

trc_2017  trc_2016  trc_2015  tsr_2017 tsr_2016 tsr_2015  roe   corr
0.21      1.23      2.54      9.42     6.14     -0.01     2.35   0.11
1.02      -3.21      0.12     9.32     5.24     6.90      3.29   3.21
-3.02      0.12      1.32     5.02     2.02     32.10     4.32   0.12

Как лучше всего использовать панд для нахождения корреляции для столбца corr?

1 Ответ

0 голосов
/ 02 января 2019

Используйте corrwith с rename для одинаковых имен столбцов в обоих подмножествах DataFrame s:

c1 = ['trc_2017', 'trc_2016', 'trc_2015']
c2 = ['tsr_2017', 'tsr_2016', 'tsr_2015']
df['corr'] = df[c1].corrwith(df[c2].rename(columns=dict(zip(c2, c1))), axis=1)
print (df)
   trc_2017  trc_2016  trc_2015  tsr_2017  tsr_2016  tsr_2015   roe      corr
0      0.21      1.23      2.54      9.42      6.14     -0.01  2.35 -0.994782
1      1.02     -3.21      0.12      9.32      5.24      6.90  3.29  0.910052
2     -3.02      0.12      1.32      5.02      2.02     32.10  4.32  0.647252
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...