什麼是最有效的方式來使用groupby並行在熊貓應用過濾器?熊貓:什麼是相當於SQL組?
基本上我要求在SQL相當於
select *
...
group by col_name
having condition
我覺得有很多使用的情況下,從有條件的手段,資金,條件概率等,這些會做出這樣的命令非常強大。
我需要一個非常好的性能,所以理想情況下這樣的命令不會是在python中完成的幾個分層操作的結果。
什麼是最有效的方式來使用groupby並行在熊貓應用過濾器?熊貓:什麼是相當於SQL組?
基本上我要求在SQL相當於
select *
...
group by col_name
having condition
我覺得有很多使用的情況下,從有條件的手段,資金,條件概率等,這些會做出這樣的命令非常強大。
我需要一個非常好的性能,所以理想情況下這樣的命令不會是在python中完成的幾個分層操作的結果。
正如unutbu的評論中提到,groupby's filter是SQL'S具有相同的:
In [11]: df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])
In [12]: df
Out[12]:
A B
0 1 2
1 1 3
2 5 6
In [13]: g = df.groupby('A') # GROUP BY A
In [14]: g.filter(lambda x: len(x) > 1) # HAVING COUNT(*) > 1
Out[14]:
A B
0 1 2
1 1 3
您可以編寫更復雜的功能(這些應用到每個組),只要它們返回一個純醇」布爾:
In [15]: g.filter(lambda x: x['B'].sum() == 5)
Out[15]:
A B
0 1 2
1 1 3
注:potentially there is a bug,你不能給你寫的功能作用於你使用GROUPBY列...一個解決辦法是GROUPBY列手動即g = df.groupby(df['A']))
。
@AndyHayden寫了一個[很好的例子](http://stackoverflow.com/a/18357933/190597)使用'groupby-filter'。我認爲'過濾器'是'擁有條件'的熊貓等值。 – unutbu