我有以下格式的数据:
56.00 101.85 52.40 101.85 56.000000 101.850000 1
56.00 100.74 50.60 100.74 56.000000 100.740000 2
56.00 100.74 52.10 100.74 56.000000 100.740000 3
56.00 102.96 52.40 102.96 56.000000 102.960000 4
56.00 100.74 55.40 100.74 56.000000 100.740000 5
56.00 103.70 54.80 103.70 56.000000 103.700000 6
56.00 101.85 53.00 101.85 56.000000 101.850000 7
56.00 102.22 52.10 102.22 56.000000 102.220000 8
56.00 101.11 55.40 101.11 56.000000 101.110000 9
56.00 101.11 54.80 101.11 56.000000 101.110000 10
56.00 101.85 52.40 101.85 56.000000 101.850000 1
56.00 100.74 50.60 100.74 56.000000 100.740000 2
........
我需要的是特定id
(最后一列)的数据。
我曾经做过numpy
:
d=loatxt('filename')
wanted = d[ d[:,6]==id ]
现在我'在学习Pandas并发现pandas.read_csv()
<{1}}。
所以逻辑上我想知道是否有可能用熊猫做同样的过滤(也许它更快)。
我的第一个想法是尝试loadtxt()
如下:
groupby
问题是:是否有一种相对简单的方法可以从p=pd.read_csv('filename', sep= ' ', header=None, names=['a', 'b', 'x', 'y', 'c', 'd', 'id'])
d = p.groupby(['id'])
#[ i, g in p.groupby(['id']) if i ==1] # syntax error, why?
的{{1}}行中p
进行选择?
修改
尝试提出的解决方案:
id==1
似乎%timeit t_1 = n[ n[:,6]==1 ][:,2:4]
10 loops, best of 3: 60.8 ms per loop
%timeit t_2 = p[ p['id'] == 1 ][['x', 'y']]
10 loops, best of 3: 70.9 ms per loop
比numpy
这意味着在这种情况下最快的工作方式是:
1)首先用Pandas Pandas
读取数据
2)将数据转换为read_csv
3)而不是工作。
这个结论是否正确?
答案 0 :(得分:1)
你可以像使用numpy那样做,只是现在用它的名字引用列:
wanted = d[d['id'] == id]