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

У меня есть 2 фрейма данных (сейчас я говорю 2, но у нас может быть n фреймов данных).И имя кадра данных находится в списке.Я хочу объединить все кадры данных, имена которых присутствуют в списке

import pandas as pd
data1 = [['Alex',10],['Bob',12],['Clarke',13]]
df1 = pd.DataFrame(data1,columns=['Name','Age'])

data2 = [['David',10],['Alain',12],['Rob',13]]
df2 = pd.DataFrame(data2,columns=['Name','Age'])

list = ['df1','df2']                   

# i want something to work like

df3 = pd.Concat(list)

Спасибо за помощь в этом.

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Не используйте имена переменных как list.Выполните итерацию по списку, чтобы получить экземпляр кадра данных, а затем выполните объединение

lis = ['df1','df2']                   

df3 = pd.concat([globals()[i] for i in lis]) # to get instance of df1 from string 'df1'
df3

Выходные данные

Name    Age
Alex    10
Bob     12
Clarke  13
David   10
Alain   12
Rob     13
0 голосов
/ 12 октября 2018

вам нужно установить имя в качестве индекса, затем сделать concat

list = [df1,df2] 

pd.concat([x.set_index('Name') for x in list],axis=1)
Out[270]: 
         Age   Age
Alain    NaN  12.0
Alex    10.0   NaN
Bob     12.0   NaN
Clarke  13.0   NaN
David    NaN  10.0
Rob      NaN  13.0

или использовать reduce + merge

from functools import reduce
df = reduce(lambda  left,right: pd.merge(left,right,on=['Name'],
                                            how='outer'), list)
df
Out[275]: 
     Name  Age_x  Age_y
0    Alex   10.0    NaN
1     Bob   12.0    NaN
2  Clarke   13.0    NaN
3   David    NaN   10.0
4   Alain    NaN   12.0
5     Rob    NaN   13.0
0 голосов
/ 12 октября 2018

Если вы хотите concat , используйте результаты:

pd.concat([df1, df2], ignore_index=True)

#     Name  Age
#0    Alex   10
#1     Bob   12
#2  Clarke   13
#3   David   10
#4   Alain   12
#5     Rob   13
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...