【问题标题】:Most efficient way to split and perform function on pandas data frame在 pandas 数据框上拆分和执行功能的最有效方法
【发布时间】:2019-10-18 08:39:07
【问题描述】:

我得到了一个数据框,其中包含行中的值(A 和 B)的两个测量值,每列代表样本的测量值。

示例如下:

ID S1 S2 S3
M1_A 1 2 3 
M1_B 3 2 1
M2_A 1 2 3 
M2_B 3 2 1 

我需要计算 B 与 A+B 的比率 [即(B/(A+B))] 每次测量每个样本。

结果数据框示例:

ID S1 S2 S3
M1 0.75 0.5 .25 
M2 0.75 0.5 .25

目前我一次读取两行文件,检查 ID 是否匹配(不包括 _A 或 _B),将“行”转换为向量,然后执行计算到向量。在较大的样本集上,这变得非常缓慢。

使用 pandas 等库最有效的方法是什么?

感谢所有帮助!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这听起来像是一个经典的 groupby-aggregate 问题。 Pandas 也可以轻松处理 ID 列中的下划线。

    df['ID'] = df['ID'].str.split('_').str[0]
    df = df.groupby('ID').agg(lambda x: x.values[-1]/x.sum())
    print(df)
    
          S1   S2    S3
    ID                 
    M1  0.75  0.5  0.25
    M2  0.75  0.5  0.25
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-25
      • 2019-04-11
      • 2018-04-16
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      相关资源
      最近更新 更多