Python 更简洁的数据帧过滤方法?
下面的代码可以工作Python 更简洁的数据帧过滤方法?,python,pandas,dataframe,lambda,Python,Pandas,Dataframe,Lambda,下面的代码可以工作 df1 = df.loc[lambda df: df.myfield == 'abc' , ['myfield' , 'field2', 'field3','field4']] print df1.iloc[:60] 但是,我只想在一条语句中打印出符合我的“abc”条件的df的前60个条目的选定列,而不需要额外的步骤,即分配给df1,然后执行第二条iloc语句。我尝试在lambda中添加第二个条件,但无法使其生效。至少,您应该能够将其简化为: print df.loc[
df1 = df.loc[lambda df: df.myfield == 'abc' , ['myfield' , 'field2', 'field3','field4']]
print df1.iloc[:60]
但是,我只想在一条语句中打印出符合我的“abc”条件的df的前60个条目的选定列,而不需要额外的步骤,即分配给df1,然后执行第二条iloc语句。我尝试在lambda中添加第二个条件,但无法使其生效。至少,您应该能够将其简化为:
print df.loc[df.myfield == 'abc', ['myfield', 'field2', 'field3', 'field4']].iloc[:60]
一般来说,我会这样做:
row_selection = df.myfield == 'abc'
col_selection = ['myfield', 'field2', 'field3', 'field4']
print df.loc[row_selection, col_selection].iloc[:60]
至少,您应该能够将其简化为:
print df.loc[df.myfield == 'abc', ['myfield', 'field2', 'field3', 'field4']].iloc[:60]
一般来说,我会这样做:
row_selection = df.myfield == 'abc'
col_selection = ['myfield', 'field2', 'field3', 'field4']
print df.loc[row_selection, col_selection].iloc[:60]
我很确定你可以不用lambda,只使用
df.myfield='abc'
我很确定你可以不用lambda,只使用df.myfield='abc'