【发布时间】:2013-09-24 16:14:30
【问题描述】:
我尝试使用数据透视表在 pivot_table 函数的“值”字段中有多个值,但它不起作用,所以我想看看我是否可以使用交叉表来做到这一点。 这是我的代码
table=pandas.pivot_table(xl2, values='Applications', rows='Sub-Product',cols='Application Date',aggfunc=numpy.sum)
我在导出到 csv 时得到这个。
Sub-Product 11/1/12 11/2/12 11/3/12
GP 190 207 65
GPF 1391 1430 1269
在python中,将其转换为数据透视表后,dtype为float64()并使用
<class 'pandas.core.frame.DataFrame'>
我最终想要的是 csv 中的这个输出:
Row Labels 11/1/2012 11/2/2012 11/3/2012
GP
Acquisitions 164 168 54
Applications 190 207 65
GPF
Acquisitions 1124 1142 992
Applications 1391 1430 1269
使用与此类似的代码(目前它不起作用:/):
table=pd.pivot_table(xl2, values=['Acquisitions','Applications'], rows=['Sub-Product'],cols=['Application Date'],aggfunc=np.sum)
但我只能得到这个:
Sub-Product ('Applications', Timestamp('2012-11-01 00:00:00', tz=None)) ('Applications', Timestamp('2012-11-02 00:00:00', tz=None)) ('Applications', Timestamp('2012-11-03 00:00:00', tz=None))
GP 190 207 65
GPF 1391 1430 1269
关于交叉表如何提供帮助的任何想法? :S
这是 csv 文件中的数据。我不知道为什么我不能把它们变成正确的数据框格式。
Application Date Sub-Product Applications Acquisitions
11/1/12 GP 1 1
11/1/12 GP 1 1
11/1/12 GP 1 1
11/1/12 GP 1 1
11/1/12 GPF 1 1
11/1/12 GPF 1 1
11/1/12 GPF 1 1
11/1/12 GPF 1 1
【问题讨论】:
-
其他数字从何而来? (您想要的视图不是查看 DataFrames 的标准方式,尽管您可以在拥有正确的 DataFrame 后创建类似的 csv...)
-
安迪,我可以把原始的 csv 文件发给你,让你测试一下吗?
-
是否可以只提供前十几行左右(或者复制上述结果的多行)并将它们编辑到您的问题中? :)
-
添加了 csv 文件的 sn-p
-
感谢编辑!啊,我明白了。所以你已经用
xl2 = pd.read_csv('your_file.csv', sep='\s+')创建了一个DataFrame?
标签: python csv pandas pivot-table crosstab