Проблема зацикливается на данных в Pandas - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть dict 'd', который представляет собой список фреймов данных. Например:

d["DataFrame1"]

Вернет этот фрейм данных со всеми его столбцами:

    ID    Name
0  123    John
1  548    Eric
2  184    Sam
3  175    Andy

Каждый фрейм данных имеетстолбец в нем называется «Имена».Я хочу извлечь этот столбец из каждого кадра данных в файле dict и создать новый кадр данных, состоящий из этих столбцов.

df_All_Names = pd.DataFrame()

for df in d:
     df_All_Names[df] = df['Names']

Возвращает ошибку:

TypeError: строковые индексы должныбыть целыми числами

Не знаю, где я здесь не так.

Ответы [ 2 ]

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

Вы можете использовать reduce и объединить все столбцы с именем ['Name'] в своем словаре фреймов данных

Пример данных

from functools import reduce
d = {'df1':pd.DataFrame({'ID':[0,1,2],'Name':['John','Sam','Andy']}),'df2':pd.DataFrame({'ID':[3,4,5],'Name':['Jen','Cara','Jess']})}

Вы можете сложить данные рядом, используяaxis=1

reduce(lambda x,y:pd.concat([x.Name,y.Name],axis=1),d.values())

   Name  Name
0  John   Jen
1   Sam  Cara
2  Andy  Jess

Или друг над другом, используя axis=0

reduce(lambda x,y:pd.concat([x.Name,y.Name],axis=0),d.values())

0    John
1     Sam
2    Andy
0     Jen
1    Cara
2    Jess
0 голосов
/ 25 апреля 2018

Например, у вас есть df, как следует

df=pd.DataFrame({'Name':['X', 'Y']})
df1=pd.DataFrame({'Name':['X1', 'Y1']})

И мы создаем dict

d=dict()
d['df']=df
d['df1']=df1

Затем предварительно устанавливаем пустой фрейм данных:

yourdf=pd.DataFrame()

Использование items с для цикла

for key,val in d.items():
    yourdf[key]=val['Name']

выход:

yourdf
Out[98]: 
  df df1
0  X  X1
1  Y  Y1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...