Pandas groupby只返回一列数据

时间:2015-04-07 16:02:46

标签: python python-2.7 pandas

我正在尝试学习大熊猫,并且正在寻找一个基本的介绍来处理basketball dataset我遇到的问题是创建一个新的groupby数据帧。例如,他正在创建以下我无法查看的内容:

group_by_opp = data.groupby('Opp')

field_goal_per_team = group_by_opp.sum()[['FGA', 'FG']]

data[data.Opp == 'ATL']

他的输出如下表所示:

Correct dataset

我的输出具有相同的代码(遵循相同的过程)是下表:

enter image description here

我希望我在工作中犯了某种语法错误,但是想知道你们中的任何人是否可以看看并帮助我理解我在说什么以及我做错了什么。< / p>

非常感谢! 马修

所要求的完整代码:

import vincent
import pandas as pd
from pandas import DataFrame, Series

vincent.core.initialize_notebook()

pd.set_option('display.max_columns', None)
columns = ['Rk','G','Date','Age','Tm','Home/Away','Opp','Win/Lose','GS','MP','FG','FGA','FG%','3P','3PA','3P%','FT','FTA','FT%','ORB','DRB','TRB','AST','STL','BLK','TOV','PF','PTS','GmSc','+/-']
data = pd.read_csv('kd2013.csv', names=columns)

del data['Rk']
del data['Home/Away']
del data['GS']
del data['Win/Lose']

group_by_opp = data.groupby('Opp')
group_by_opp.sum()

data.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 82 entries, 0 to 81
Data columns (total 26 columns):
G       81 non-null float64
Date    82 non-null object
Age     82 non-null object
Tm      82 non-null object
Opp     82 non-null object
MP      82 non-null object
FG      82 non-null object
FGA     82 non-null object
FG%     82 non-null object
3P      82 non-null object
3PA     82 non-null object
3P%     82 non-null object
FT      82 non-null object
FTA     82 non-null object
FT%     82 non-null object
ORB     82 non-null object
DRB     82 non-null object
TRB     82 non-null object
AST     82 non-null object
STL     82 non-null object
BLK     82 non-null object
TOV     82 non-null object
PF      82 non-null object
PTS     82 non-null object
GmSc    82 non-null object
+/-     82 non-null object
dtypes: float64(1), object(25)

编辑:添加加载数据并按要求添加data.info()

1 个答案:

答案 0 :(得分:0)

所以我的问题的答案是我的CSV文件将所有内容导入为目标文件而不是float64或int64;

我还不确定为什么会这样或最终会如何发生。我怀疑是因为最后一行(对于通常产生整数的大多数条目都是“非活动”)。我写了一个简单的函数来转换我想在vincent中查看的每一列:

def object_to_int(numbers):
    return int(numbers)

从那里我将映射函数应用于列:

data['FG'] = map(object_to_int, data['FG'])
data['FGA'] = map(object_to_int, data['FGA'])

我注意到函数引发了一个值错误,因为我无法在字符串上使用int(),为什么会这样?呃,有一列非活动。所以我修剪了那个:

data = data[data.MP != 'Inactive']

瞧:

group_by_opp.sum()

G   FG  FGA

奥普
ATL 28 21 40