Как выполнять операции с выбранными строками в dataframe pandas? - PullRequest
1 голос
/ 13 октября 2019

У меня есть следующий фрейм данных:

data = {'A': [1,2,3,4,5,6,7], 'B':[1.1,1.3,1.35,1.43,1.5,1.54,1.6]}

df1 = pd.DataFrame(data=data)

Я хочу создать новый df, значения которого основаны на работе над столбцом B в df1.

Каждая строка в новом df2 ['Output']:

 = -B[i] + 2*B[i+1] -B[i+2]

, где I представляет номер строки.

Новое имя каждой строки в df2 должно объединятьсячисла в столбце A.

Полученный кадр данных должен выглядеть следующим образом

df2 = pd.DataFrame({'Output':[0.15,-0.03,0.01,0.03,-0.02]})

df2['Name'] = ['123', '234','345','456','567']

Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 октября 2019

Согласно вашей логике:

df2 = (df['B'].shift() * 2 - df['B'] - df['B'].shift(2)).to_frame(name='Output')

Или вы можете сделать

df2 = (-df['B'].diff().diff()).to_frame(name='Output')

Вывод:

   Output
0     NaN
1     NaN
2    0.15
3   -0.03
4    0.01
5    0.03
6   -0.02
1 голос
/ 13 октября 2019

Если я правильно понял вопрос, результирующий кадр данных должен содержать только значение, отличное от NaN (для которого допустимы i, i + 1 и i + 2). Я думаю, что ответ также потребует небольшой модификации того, что предоставил @Quang Hoang.

df2 = (df1['B'].shift() * 2 - df1['B'] - df1['B'].shift(2)).to_frame(name='Output').shift(-2).dropna()

Вывод :

>>> df2 = (df1['B'].shift() * 2 - df1['B'] - df1['B'].shift(2)).to_frame(name='Output').shift(-2).dropna()
>>> df2
   Output
0    0.15
1   -0.03
2    0.01
3    0.03
4   -0.02
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...