【发布时间】:2016-05-03 01:51:03
【问题描述】:
(我是 pandas n00b)我有一些格式奇怪的 CSV 数据,类似于:
i A B C
x y z x y z x y z
-------------------------------------
1 1 2 3 4 5 6 7 8 9
2 1 2 3 3 2 1 2 1 3
3 9 8 7 6 5 4 3 2 1
其中A、B、C 是分类属性,每个属性都存在x、y、z。我认为我想要做的(更大的split-apply-combine 步骤的一部分)是用 Pandas 读取数据,这样我就有了尺寸同质的观察,如下所示:
i id GRP x y z
-----------------------
1 1 A 1 2 3
2 1 B 4 5 6
3 1 C 7 8 9
4 2 A 1 2 3
5 2 B 3 2 1
6 2 C 2 1 3
7 3 A 9 8 7
8 3 B 6 5 4
9 3 C 3 2 1
那么如何最好地做到这一点?
#1:我考虑使用基本的read_csv() 选项读取文件,然后迭代/切片/转置/以创建具有 i 结构的另一个数据框想。但在我的情况下,类别 (A,B,C) 和属性 (x,y,z) 的数量很大并且事先不知道的时间。如果扩展到大型数据集,我还担心内存问题。
#2:我喜欢在read_csv() 中设置iterator 参数然后每行产生多个观察值的想法。 (有什么理由不设置chunksize=1?)至少我不会以这种方式创建多个数据帧。
有什么更聪明的方法来做到这一点?
【问题讨论】:
-
我能准确地看到以下数据的输出吗:
data = []; with open(filename) as f: [data.append(f.readline()) for _ in range(5)]其中文件名显然是文件的路径。
标签: python pandas dataframe iterator