pandas: complex filter on rows of DataFrame

后端 未结 6 1560
没有蜡笔的小新
没有蜡笔的小新 2020-12-04 15:22

I would like to filter rows by a function of each row, e.g.

def f(row):
  return sin(row[\'velocity\'])/np.prod([\'masses\']) > 5

df = pandas.DataFrame(.         


        
6条回答
  •  伪装坚强ぢ
    2020-12-04 15:40

    I canot comment on duckworthd's answer, but it is not perfectly working. It crashes when the dataframe is empty:

    df = pandas.DataFrame(columns=['a', 'b', 'c'])
    df[df.apply(lambda x: x['b'] > x['c'], axis=1)]
    

    Outputs:

    ValueError: Must pass DataFrame with boolean values only
    

    To me it looks like a bug in pandas, since { } is definitively a valid set of boolean values. For a solution refer to Roy Hyunjin Han's answer.

提交回复
热议问题