2014-09-02 3 views
1

Я прочитал в CSV файл, как следующие:Python панды: Ошибка типа в GroupBy

import pandas as pd 

out = "M:/transitions.csv" 
transitions = pd.read_csv(out) 

transitions = transitions.groupby('unique_pid') 

Вот что мой dataframe выглядит следующим образом:

In [11]: transitions.head() 
Out[11]: 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 5 entries, 0 to 4 
Data columns (total 24 columns): 
Unnamed: 0    5 non-null values 
Unnamed: 0.1    5 non-null values 
Unnamed: 0.1    5 non-null values 
unique_pid    5 non-null values 
Unnamed: 1    5 non-null values 
unique_pid.1    5 non-null values 
age      5 non-null values 
age2      5 non-null values 
year      5 non-null values 
Single-family house  5 non-null values 
Duplex/ 2-family house 5 non-null values 
Multifamily    5 non-null values 
Mobile Home/ trailer  5 non-null values 
Condo      5 non-null values 
Townhouse     5 non-null values 
Other      5 non-null values 
Don't know    5 non-null values 
Refused     5 non-null values 
numrooms     5 non-null values 
famsize     5 non-null values 
moved      5 non-null values 
whymoved     5 non-null values 
seniorh     5 non-null values 
inst      5 non-null values 
dtypes: float64(10), int64(14) 

И я получаю следующее сообщение об ошибке:

TypeError: 'DataFrame' object is not callable 

Я проверил, что ключ «unique_pid» в моем dataframe со следующим кодом:

In [8]: print 'unique_pid' in transitions 
True 

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

+0

Можете ли вы опубликовать первые несколько строк csv? – TomAugspurger

+0

Я только что разместил голову DataFrame. Должен ли я также вставлять фактические строки csv? – svenkatesh

+0

Я видел эту проблему, вызванную дублирующимися именами столбцов. Можете ли вы переименовать unique_pid.1 в нечто совершенно другое, решая проблему? Кроме того, можете ли вы попробовать группировать другое поле, чтобы узнать, сохраняется ли проблема? Я вижу, что Безымянный: 0.1 появляется дважды, что может быть испортить это тоже. Что касается данных, то для меня будут полезны первые первые 6 строк, включая заголовки. – BKay

ответ

1

Это, по-видимому, более тонкая версия проблемы в этом SO question.

По существу, в то время как DF будет успешно импортировать данные с несколькими столбцами с одинаковым именем, функция groupby, кажется, задыхается и умирает на таких кадрах данных. Переименование дублированных имен столбцов обычно сортирует вещи. Что странно в вашей проблеме, так это то, что столбцы не идентичны, просто очень близки. Не знаю, почему это было бы проблемой. Тем не менее, я вижу, что Безымянный: 0,1 появляется дважды, что может быть испортить это тоже. Когда вы вынуждены иметь дело с данными, страдающими от этого дублирования, я рекомендую начальный шаг переименования всех заголовков столбцов с разумным и уникальным списком имен. Вы можете это сделать, назначив список строк заголовка столбца для переходов. Columns a la:

transitions.columns = ['Unnamed_A', 'Unnamed_B', 'Unnamed_C', 'unique_pid_A', 'Unnamed_D', 'unique_pid_B', 'age', 'age2', 'year', 'Single-family house', 'Duplex_2_family hou', 'Multifamily', 'Mobile Home/ trailer', 'Condo', 'Townhouse', 'Other', 'Don't know', 'Refused', 'numrooms', 'famsize', 'moved', 'whymoved', 'seniorh', 'inst'] 
Смежные вопросы