Вычтите две последовательные строки и сохраните в первой строке, используя pandas - PullRequest
0 голосов
/ 21 января 2020

У меня есть pandas формат данных с 226 столбцами:

**W    X    Y    Z.....**
  a    b    c    d.....
  e    f    g    h.....    

Я хочу вычесть столбцы Y и Z следующим образом:

**W      X      Y          Z.....**
  a    (b-c)  (c-d)  (d-nextvalue).....
  e    (f-g)  (g-h)  (h-nextvalue).....   

как мне go об этом? Я ладья ie в python, заранее спасибо

Ответы [ 2 ]

4 голосов
/ 21 января 2020

Используйте DataFrame.diff и при необходимости преобразуйте первый столбец в индекс как DataFrame.set_index:

df = pd.DataFrame({
        'W':list('abc'),
         'X':[10,5,4],
         'Y':[7,8,9],
         'Z':[1,1,0],
         'E':[5,3,6],
})

df = df.set_index('W').diff(-1, axis=1)
print (df)
      X    Y    Z   E
W                   
a  3.0  6.0 -4.0 NaN
b -3.0  7.0 -2.0 NaN
c -5.0  9.0 -6.0 NaN
1 голос
/ 21 января 2020

Чтобы создать 'W' в качестве индекса, который вы можете сделать,

df.set_index('W', inplace=True)

Далее, вы можете попробовать следующее:

for i in range(len(df.columns) - 1):
    df.iloc[:, i] = df.iloc[:, i] - df.iloc[:, i+1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...