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 NaN
s 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
我有一个数据集,它有 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 NaN
s 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