Вычитание pandas кадра данных - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь вычесть 2 кадра данных, но потом не получаю то, что хочу, я хотел бы разделить разницу на значения третьего кадра данных.

Для первой части я попытался сделать:

r.sub(rf, fill_value=0)

И чтобы быть уверенным, что они имеют одинаковое количество строк, я решил пока не сбрасывать na и убедиться, что они имеют одинаковое имя индекса.

Вот то, что у меня есть ...

Например, в 2020-01-09 у меня должно быть 0,030079 (= 0,136245 - 0,106166). Похоже, что он объединяет столбцы двух фреймов данных ...

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Да, у меня есть 2 кадра данных. И на самом деле, 3 ...

у меня есть al oop, а r должен быть временным фреймом данных, в котором я храню:

  • указанную c дату индекс (например, Date.0, Date.1 ...)
  • определенный актив c (например, Brent Oil, Crude Oil ...)

из третьего DataFrame (этот) , который объединяет все данные вместе.

Затем для каждого актива я хотел бы вычесть rf здесь

Я удостоверился, что у меня одинаковые даты начала и окончания, с:

    start=r.index[0]
    end=r.index.dropna()[-1]

Но да, в конце я пытаюсь снова получить фрейм данных.

Я попробую ваше предложение с динамической c переменной для имени!

r['Brent Oil'].sub(rf['S&P GSCI'], fill_value=0)
0 голосов
/ 06 апреля 2020

Обратите внимание, что согласно вашему изображению:

  • у вас есть только один DataFrame (скажем, df ) с двумя столбцами ,
  • вы пишете о вычитании из них, но второе значение отрицательное .

Итак, запустите:

df['Brent Oil'] + df['S&P GSCI']

и, например, для 2020-01-09 результат будет просто 0.030079 .

Edit

Или, может быть, у вас есть 2 кадра данных:

  • r с (только) Brent Oil колонка,
  • rf с (также только) S & P GSCI столбец (с соответствующими положительными значениями),
  • , и ваше изображение содержит результат вычитания?

Если это В этом случае вычтите указанные столбцы, а не целые фреймы данных:

r['Brent Oil'].sub(rf['S&P GSCI'], fill_value=0)

Тогда результатом будет Series со значением просто 0.030079 для 2020- 01-09 .

Вы также можете запустить np.array(r['Brent Oil']) - np.array(rf['S&P GSCI']) (что-то похожее на то, что * 10 62 * Anurag Reddy предложено), но тогда вы получите только массив Numpy с обрезанным индексом, поэтому не очевидно, какая разница для какой даты, и, вероятно, это не то, что вы хочу.

...