Как выровнять несколько серий панд или фреймов данных - PullRequest
0 голосов
/ 25 сентября 2018

Есть ли способ выровнять несколько серий панд или фреймов данных.

Допустим, у меня есть список серий панд, и я хочу:

  • сохранить только элементы индекса, которые присутствуютво всех сериях (внутреннее объединение)
  • во всех сериях есть элементы индекса, которые являются объединением всех индексов (внешнее объединение)

Следующий код достигает того, что я хочу (для внутреннего и внешнего)объединение)

import pandas as pd
import itertools

def align(pd_objects, join='outer', axis=0):
    """apply align on all combinations of the list of pd objects"""
    for (i, j) in itertools.combinations(range(len(pd_objects)), 2):
        (pd_objects[i], pd_objects[j]) = pd_objects[i].align(pd_objects[j], join, axis)
    return tuple(pd_objects)

s_1 = pd.Series(['a', 'b', 'c', 'd'], index=[1, 2, 3, 4])
s_2 = pd.Series(['b', 'c', 'd'], index=[2, 3, 4])
s_3 = pd.Series(['a', 'b', 'c'], index=[1, 2, 3])

Где:

(s_1x, s_2x, s_3x) = align([s_1, s_2, s_3], join='inner', axis=0)

Возвращает три серии с индексами ['b', 'c']

И:

(s_1y, s_2y, s_3y) = align([s_1, s_2, s_3], join='outer', axis=0)

Возвращает три серии с индексами ['a', 'b', 'c', 'd']

Но я думаю, что есть гораздо более эффективный и питонский способ сделать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...