Применить функцию к панде DataFrame, 2 цикла, где внешний цикл равен оси = 1, а внутренний цикл - оси = 0 - PullRequest
0 голосов
/ 06 октября 2019

Я новичок в Python и у меня проблема. Пожалуйста, только указывайте мне правильное направление, а не говорите мне ответ.

df = 
idx A B
0 21 45
1 43 76
2 32 67
3 92 55
4 11 82

Для каждой строки в A я хочу найти разницу между этим и ВСЕМИ элементами в B. Затем перейдите к следующей строкеи снова найдите разницу между этим и всем элементом в В и т. д.

Пожалуйста, дайте мне несколько идей относительно того, как я могу решить эту проблему. Заранее спасибо.

Джо

1 Ответ

0 голосов
/ 06 октября 2019

вы можете использовать функцию широковещательной трансляции, чтобы сделать это, как показано ниже:

  • df.A.values ​​и df.B.values ​​дает массив значений каждого столбца
  • (df.A.values ​​- df.B.values ​​[:, np.newaxis]) даст разницу между каждой парой значений в A и B в виде матрицы
pd.DataFrame((df.A.values - df.B.values[:,np.newaxis]), 
              columns = [f"diff_{val}" for val in df.A])

Результат

diff_21 diff_43 diff_32 diff_92 diff_11
0   -24 -2  -13 47  -34
1   -55 -33 -44 16  -65
2   -46 -24 -35 25  -56
3   -34 -12 -23 37  -44
4   -61 -39 -50 10  -71
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...