Pandas 从属列查找

Pandas dependent columns lookup

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

   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 数据帧是否是个好主意?谁能想到一个优雅的查找解决方案?

您可以使用 unstack for columns by conditions, then divide columns and last remove all NaNs rows by dropna:

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