Как объединить несколько кадров данных в цикле с помощью классов - PullRequest
0 голосов
/ 18 апреля 2019

Использует класс и определяет функции для выполнения pd.merge между несколькими фреймами данных. Показана ошибка.

Я попробовал это, показано:

ValueError:can not merge DataFrame with instance of type 
<class '__main__.Merge'>
class Merge(object):
    def __init__(self, table1, table2):
        self.table1 = table1
        self.table2 = table2
    def merged(self):
        return pd.merge(self.table1,self.table2, how ='left', on ='TITLE')
a=Merge(df4,df6);b=Merge(a,df8);c=Merge(b,df10);d=Merge(c,df12);e=Merge(d,df14);f=Merge(e,df16)
for obj in [a,b,c,d,e,f]:
    obj.merged()

Можно ли использовать класс, чтобы зациклить их и зациклить все за один раз?

1 Ответ

0 голосов
/ 18 апреля 2019

Достигает ли это того, что вам нужно?

import pandas as pd
from functools import reduce

class Merge(object):
    def __init__(self, tables, on, how):
        self.tables = tables
        self.on = on
        self.how = left


    def merged(self):
        return reduce(
            lambda left, right: pd.merge(left, right, on=self.on, how=self.how), self.tables
        )


obj = Merge(tables=[df1, df2, df3], on="TITLE", how="left")
obj.merged()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...