【问题标题】:Pandas dependent columns lookupPandas 依赖列查找
【发布时间】:2018-09-04 14:47:30
【问题描述】:

我有一个数据集,其中包含 2 个条件、2 个重复和具有相应值(数量)的样本。我将其读入熊猫数据框:

   condition  replicate sample  amount
0          1          1     a1       5
1          1          1     a2       2
2          1          2     a1       3
3          1          2     a2       1
4          2          1    b99       7
5          2          1     a2       4
6          2          2     a1       3
7          2          2     a2       2

如果它们属于相同的重复(并且具有相同的样本名称),我想将条件 1 中每个样本的数量除以条件 2 中相应样本的数量。

换句话说,我想找到条件之间样本名称和重复数匹配的数量之间的比率。

在这个例子中,输出应该是这样的:

   replicate sample    amount
0          1     a1  0.714286
1          1     a2       NaN
2          2     a1  1.000000
3          2     a2  0.500000

如果我应该以不同的方式构建我的数据,以及使用 pandas 数据框是否是个好主意,我需要建议吗?谁能想到一个优雅的查找解决方案?

【问题讨论】:

    标签: python-3.x pandas lookup


    【解决方案1】:

    您可以按条件对列使用unstack,然后将列除以dropna,最后删除所有NaNs 行:

    df = df.set_index(['sample','replicate','condition'])['amount'].unstack()
    df['new'] = df[1].div(df[2])
    
    df = df['new'].unstack().dropna(how='all').stack(dropna=False).reset_index(name='amount')
    print (df)
      sample  replicate  amount
    0     a1          1     NaN
    1     a1          2     1.0
    2     a2          1     0.5
    3     a2          2     0.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-21
      • 2016-11-13
      • 1970-01-01
      • 2021-01-28
      • 2011-02-12
      • 1970-01-01
      • 2016-05-24
      • 2012-10-21
      相关资源
      最近更新 更多