столбец вычитания и умножения - PullRequest
0 голосов
/ 18 июня 2019

мне нужно сделать вычитание и умножение столбцов. согласно приведенному ниже формату.

df1

 A  B   C   D   E
10  11  13  12  15
11  13  10  15  13

может быть 'n' количество столбцов.

formula - subtraction: 
column 1 - column B, them col B - col C then col C - col D and so on. 

formula - Multiplication: 
row1 multiply by row2 

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

                   A      B   C    D    E
SUBTRACTION       -1     -2   1   -3    15
MULTIPLCATION    -11     -26  10 -45    195

Ответы [ 3 ]

3 голосов
/ 18 июня 2019

Если вы хотите, чтобы первая строка вычиталась, а затем умножалась на строку 2:

arr = df.values
df
    A   B   C   D   E
0   10  11  13  12  15
1   11  13  10  15  13

df.iloc[0, :-1] = arr[0, :-1] - arr[0, 1:]
df

     A  B   C   D   E
0   -1  -2  1   -3  15
1   11  13  10  15  13

.values преобразует Фрейм данных в массив numpy. Если вы этого не сделаете, то панды будут только вычитать соответствующие столбцы.

df.iloc[1,:] = arr[0] * arr[1]
df
     A  B   C    D   E
0   -1  -2  1   -3   15
1   -11 -26 10  -45  195

Затем измените индекс:

df.index = ['SUBTRACTION', 'MULTIPLCATION']
df

                 A   B   C  D   E
SUBTRACTION      -1 -2   1  -3  15
MULTIPLCATION   -11 -26  10 -45 195
2 голосов
/ 18 июня 2019

Используйте indexing, а затем mul и sub как:

df.iloc[0,:-1] = df.iloc[0,:-1].sub(df.iloc[0,1:].to_numpy())
df.iloc[1,:] = df.iloc[0,:].mul(df.iloc[1,:])
df.index = ['SUBTRACTION', 'MULTIPLCATION']

print(df)
                A   B   C   D    E
SUBTRACTION    -1  -2   1  -3   15
MULTIPLCATION -11 -26  10 -45  195
0 голосов
/ 18 июня 2019

Или почему бы и нет:

>>> df.iloc[0] = df.iloc[0].sub(df.iloc[0].shift(-1)).fillna(df.iloc[0])
>>> df.iloc[1] = df.iloc[0].mul(df.iloc[1])
>>> df
      A     B     C     D      E
0  -1.0  -2.0   1.0  -3.0   15.0
1 -11.0 -26.0  10.0 -45.0  195.0
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...