我在csv文件中读取如下内容:
import pandas as pd
out = "M:/transitions.csv"
transitions = pd.read_csv(out)
transitions = transitions.groupby('unique_pid')
以下是我的数据框:
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&#39;在我的数据框中使用以下代码:
In [8]: print 'unique_pid' in transitions
True
所以它显然是一个有效的密钥。我以前用这种方式多次使用群组没有任何问题,所以我不确定出了什么问题。
答案 0 :(得分:1)
这似乎是此SO question中问题的一个更微妙的版本。
基本上,虽然DF会愉快地导入具有多个同名列的数据,但groupby函数似乎会阻塞并死于该类型的数据帧。重命名重复的列名通常会将事情排序。对你的问题感到奇怪的是,列不完全相同,只是非常接近。不知道为什么那会是一个问题。但是,我看到未命名:0.1出现两次,这可能会搞砸了。当被迫处理遭受此重复的数据时,我建议使用合理且唯一的名称列表重命名所有列标题的初始步骤。您可以通过将新列标题字符串的列表分配给transitions.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']