如何从python pandas中的excel文档中读取数据透视表?

时间:2017-09-11 11:39:15

标签: python pandas dataframe pivot-table

我有一个包含运动专栏的excel文件,其中有运动名称和运动员名字。如果我点击体育名称,体育人员名字就会消失,即体育名称是体育名称的孩子。

请查看以下数据: enter image description here

如果我点击蟋蟀然后ramesh,suresh,mahesh名字消失,即板球是ramesh的父母,suresh和mahesh像同样的足球是pankaj,riyansh,suraj的父母。

我想阅读这个excel文档并在python pandas Dataframe中进行转换。我尝试用pandas pivot_table阅读,但我没有取得任何成功。

我尝试阅读此excel表并转换为数据帧。

df = pd.read_excel("sports.xlsx",skiprows=7,header=0)
d = pd.pivot_table(df,index=["sports"])
print d

但是我在单列中获得所有体育价值观我希望通过体育名称和相应的体育名称将其分开。

预期输出:

sports_name player_name   age address
cricket     ramesh        20  aaa
cricket     suresh        21  bbb
cricket     mahesh        22  ccc
football    pankaj        24  eee
football    riyansh       25  fff
football    suraj         26  ggg
basketball  rajesh        28  iii
basketball  abhijeet      29  jjj

1 个答案:

答案 0 :(得分:3)

pandas.pivot_table是支持数据分析并帮助您创建类似于excel的数据透视表,而不是读取excel数据透视表。

  

将电子表格样式的数据透视表创建为DataFrame。数据透视表中的级别将存储在结果DataFrame的索引和列上的MultiIndex对象(层次索引)中

文档中的示例

>>> df
   A   B   C      D
0  foo one small  1
1  foo one large  2
2  foo one large  2
3  foo two small  3
4  foo two small  3
5  bar one large  4
6  bar one small  5
7  bar two small  6
8  bar two large  7


>>> table = pivot_table(df, values='D', index=['A', 'B'],
...                     columns=['C'], aggfunc=np.sum)
>>> table
          small  large
foo  one  1      4
     two  6      NaN
bar  one  5      4
     two  6      7

现在,为了帮助您解决问题,我创建了一个示例数据集和一个数据透视表。

然后将excel表读入pandas数据帧。此数据框包含要使用df.fillna(method='ffill')

替换的nans

enter image description here

df = pd.read_excel(pviotfile,skiprows=12,header=0)
df=df.fillna(method='ffill')
print (df)

输出

       Sports     Name  Address  Age
0  basketball  Abhijit  129 ABC   20
1  basketball   Rajesh  128 ABC   20
2     Cricket   Mahesh  123 ABC   20
3     Cricket   Ramesh  126 ABC   20
4     Cricket   Suresh  124 ABC   20
5    Football   Riyash  125 ABC   20
6    Football    suraj  127 ABC   20