【问题标题】:How to read pivot table from excel document in python pandas?如何从 python pandas 中的 excel 文档中读取数据透视表?
【发布时间】:2017-09-11 11:39:14
【问题描述】:

我有一个包含运动列的 excel 文档,其中提供运动名称和运动人员姓名。如果我点击运动名称,运动人的名字就会消失,即运动人的名字是运动名称的孩子。

请看下面的数据:

如果我点击了 cricket,那么 ramesh、suresh、mahesh 的名字就会消失,即 cricket 是 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

【问题讨论】:

  • 您尝试了一些方法,但没有成功?你尝试了什么?出了什么问题?
  • 这看起来更像是格式错误的表格,而不是数据透视表。你的足球age23...

标签: python pandas dataframe pivot-table


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2021-01-16
    • 2018-09-03
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多