我在熊貓中有以下基于行的資料集,并且想要過濾滿足多個標準的模塊,例如所有模塊(setting='Foo' and value=2) and (setting='bar' and value=1)
目前我正在為每個標準單獨獲取模塊,然后構建所有單個結果的交集。有沒有更有效的方法,例如將資料集轉換為基于列的資料集,然后使用一個查詢進行過濾(setting_foo=2 and settting_bar=3)
module setting value
-----------------------------------------
A Foo 2
A bar 1
B Foo 3
B bar 1
...
此示例的所需輸出將是模塊 A,因為模塊 B 滿足 bar=1 但不滿足 foo=2
uj5u.com熱心網友回復:
您可以使用.pivot為每個模塊創建 Foo 和 Bar 列,如下所示:
df_pivot = df.pivot(index='module', columns='setting', values='value').reset_index()
給出:
setting module Foo bar
0 A 2 1
1 B 3 1
然后你可以使用.loc過濾 where Foo=2 and bar=1,并在模塊列上過濾,如下:
df_pivot.loc[(df_pivot['Foo'] == 2) & (df_pivot['bar'] == 1), 'module']
哪個輸出:
0 A
Name: module, dtype: object
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425825.html
