Создание разницы фрейма данных с 1 столбцом в python

#python #pandas

#python #pandas

Вопрос:

Я новичок в Python и пытаюсь воспроизвести на Python то, что сделано в Excel.

Я хочу взять разницу в столбцах (A, B, C) со средним значением (фиксированным)

     Unnamed:0   A   B   C   mean    Mean diffA
0   2020-08-28  1   6   11  6.0 -5.0
1   2020-08-29  2   7   12  7.0 -5.0
2   2020-08-30  3   8   13  8.0 -5.0
3   2020-08-31  4   9   14  9.0 -5.0
4   2020-09-01  5   10  15  10.0    -5.0
  

1 способ — вручную ввести имя столбца и найти разницу, но есть ли какой-либо другой, менее ручной способ?

 new_df['Mean diffA']=new_df['A']-new_df['mean']
  

Комментарии:

1. Было бы здорово указать, какую библиотеку вы используете

Ответ №1:

Вы можете вычесть среднее значение из диапазона столбцов:

 diffs = new_df.loc[:, 'A':'C'].subtract(new_df['mean'], axis=0)
  

Затем объедините различия и исходный фрейм данных:

 new_df.join(diffs, rsuffix='_mean')
  

Комментарии:

1. спасибо, но если у меня большой набор данных, мне все равно нужно вводить (‘A’:’C’)?, есть ли способ использовать индексацию для указания столбца

2. Да, вы можете использовать индексы с . iloc

Ответ №2:

У вас есть несколько вариантов для этого. Я попробовал следующее, и это сработало.

 import pandas as pd

dt = {'START DATE':['2020-08-28','2020-08-29','2020-08-30',
                      '2020-08-31','2020-09-01'],
      'A':[1,2,3,4,5],
      'B':[6,7,8,9,10],
      'C':[11,12,13,14,15]}

df = pd.DataFrame(dt)

df['Mean'] = df.loc[:,'A':'C'].mean(axis=1)

df[['dA','dB','dC']] = df.loc[:, 'A':'C'].subtract(df['Mean'], axis=0)

print(df)
  

ИЛИ вы также можете попробовать сделать что-то подобное

 df[['dA','dB','dC']] = df.loc[:,'A':'C'] - df[['Mean','Mean','Mean']].values

print(df)
  

Оба они будут обеспечивать одинаковый результат:

    START DATE  A   B   C  Mean   dA   dB   dC
0  2020-08-28  1   6  11   6.0 -5.0  0.0  5.0
1  2020-08-29  2   7  12   7.0 -5.0  0.0  5.0
2  2020-08-30  3   8  13   8.0 -5.0  0.0  5.0
3  2020-08-31  4   9  14   9.0 -5.0  0.0  5.0
4  2020-09-01  5  10  15  10.0 -5.0  0.0  5.0
  

Второй вариант не является хорошим способом его использования. Pandas предоставляет вам функцию вычитания. Используйте это.