【问题标题】:apply a procedure to some rows in a dataframe in python将过程应用于python中数据框中的某些行
【发布时间】:2021-07-07 16:16:54
【问题描述】:

我有一个数据框。我想将一个函数应用于选定的行。最终的想法可以是根据一些并行化方案来选择行。

假设我有一个名为“dfr”的数据框。我还定义了一个函数:

def test(xx):
    
    print(xx)
    
    return

我想对我的数据框的每一行应用测试,例如我可以使用:

dfr.apply(test, axis=1)

但是,我怎样才能对第 5 行和第 15 行之间的所有行执行此操作?

我尝试过“lambda”,但它似乎不起作用。

感谢您的帮助

【问题讨论】:

    标签: python pandas apply


    【解决方案1】:

    IIUC:

    dfr.iloc[5:15].apply(test, axis = 1)
    

    pandas.DataFrame.iloc 让您可以按位置选择行(和列)。

    【讨论】:

      【解决方案2】:

      您可以制作仅包含某些行的数据框的过滤副本,然后在该过滤副本上运行 apply 或 lambda。然后在原始索引上合并以获得输出。您将要决定如何处理您没有做任何事情的行的空值 - 可能会覆盖原始列?注意 apply 和 lambda 很慢,所以如果你能避免它,你会过得更好。过滤 df 减少了 lambda 需要做的工作量。

      def test(xx):
          return xx + 1
      
      df = pd.DataFrame({'values':[i for i in range(20)]})
      
      df_filtered = df.iloc[6:15, :]  
      # For slicing rows explicitly, from 6 up to but not including 15
      
      df_filtered = df_filtered.apply(test, axis=1)
      
      df_filtered = df_filtered.rename(columns={'values':'new_values'})
      df = df.join(df_filtered)       # joins on original index
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 2021-06-22
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多