Добавьте два кадра данных панд с разными индексами - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть два фрейма данных, в каждом из которых много столбцов и строк. Элементы в каждой строке одинаковы, но их индексация отличается. Я хочу добавить элементы одного из столбцов двух фреймов данных.

В качестве основного примера рассмотрим следующие две серии:

Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])

Скажите, что каждая строка содержит один и тот же элемент, только в разных индексах. Я хочу добавить два столбца и получить в конце новый столбец, содержащий [4,6,0,10]. Вместо этого из-за индексов я получаю [nan, 5, 7, 1].

Есть ли простой способ решить эту проблему без изменения индексов?

Я хочу выводить как серию.

Ответы [ 4 ]

0 голосов
/ 26 апреля 2018

Вы можете использовать reset_index(drop=True):

Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])

Sr1 + Sr2.reset_index(drop=True)

0     4
1     6
2     0
3    10
dtype: int64

Кроме того,

pd.Series(Sr1.values + Sr2.values, index=Sr1.index)
0 голосов
/ 26 апреля 2018

Вы можете использовать .values ​​, который дает вам пустое представление, а затем вы можете добавить их следующим образом:

Sr1.values + Sr2.values
0 голосов
/ 26 апреля 2018

Один из способов - использовать reset_index на одной или нескольких сериях:

Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])

res = Sr1 + Sr2.reset_index(drop=True)

0     4
1     6
2     0
3    10
dtype: int64
0 голосов
/ 26 апреля 2018

Использование zip

Ex:

import pandas as pd

Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])

sr3 = [sum(i) for i in zip(Sr1, Sr2)]
print(sr3)

Выход:

[4, 6, 0, 10]
...