如何使用'groupby'提取数据

时间:2016-08-28 19:50:27

标签: python python-3.x pandas dataframe

import pandas as pd

df= pd.DataFrame({'date':[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],
     'name':list('aaaaabbbbbccccc'),
     'v1':[10,20,30,40,50,10,20,30,40,50,10,20,30,40,50],
     'v2':[10,20,30,40,50,10,20,30,40,50,10,20,30,40,50],
     'v3':[10,20,30,40,50,10,20,30,40,50,10,20,30,40,50]})

a= list(set(list(df.name)))
plus=[]
for i in a:
    sep=df[df.name==i]
    sep2=sep[(sep.v1>=10)&(sep.v2>=20)&(sep.v3<=40)]
    plus.append(sep2)
result=pd.concat(plus)
print(result)

我知道这不是一个好例子,

我想按名称单独处理。

大数据需要太长时间

如何使用'groupby'提取数据?

如果使用该功能更好(def..apply ...)

df.groupby(['name'])(df['v1']>20) ... ????它不能工作......

1 个答案:

答案 0 :(得分:0)

查看您想要的数据集我认为您不需要groupby df,您只需过滤它:

In [112]: df.query('v1 >= 10 and v2 >= 20 and v3 <= 40')
Out[112]:
    date name  v1  v2  v3
1      2    a  20  20  20
2      3    a  30  30  30
3      4    a  40  40  40
6      2    b  20  20  20
7      3    b  30  30  30
8      4    b  40  40  40
11     2    c  20  20  20
12     3    c  30  30  30
13     4    c  40  40  40