我有一张包含实验室结果的表格,包括“盲复制样本”。这些基本上是一个采样两次,其中第二个样本被赋予了一个不可描述的标签。相应的原始样品在一个单独的列中标明
Labels = ['A1-1', 'A1-2', 'A1-3', 'A1-4','B1-2', 'B1-3', 'B1-4', 'B1-5', 'Blank1', 'Blank2', 'Blank3']
Values = [8356532 ,7616084,5272477, 5076012, 411851, 415258, 8285777, 9700884, 9192185, 4466890,830516]
Duplicate_of = ['','','','','','','','','A1-1', 'A1-4', 'B1-3']
d = {'Labels': Labels, 'Values': Values, 'Duplicate_of' : Duplicate_of}
df = pd.DataFrame(data=d)
df = df[['Labels','Values','Duplicate_of']]
我想在dataframe中添加一个列,该列保存来自原始示例的重复项的“值”。因此,一个新列(“原始值”),其中“Blank1”输入“A1-1”的值,对于“Blank2”输入“A1-4”的值,等等。对于“Duplicate”字段为空的行,这个新列也是空的。在
在excel中,使用Vlookup很容易实现,但我在Pandas中还没有看到一种简单的方法(也许除了将整个表与自身连接起来之外?)在
不是一个节省内存的答案,但这是有效的
对于原始值中的其余值,它给出NaN。你可以决定用什么代替它。在
新列的类型不是整数,如果需要,也可以更改它。在
有了@jezrael评论,同样的事情可以做
^{pr2}$以下是最简单的方法,用一行代码:
说明:
这只是对列
"Duplicate_of"
的每个元素应用lambda函数首先检查项是否为空字符串,如果是,则返回空字符串:
^{pr2}$相当于:
如果不是空字符串,则执行以下命令:
当条件
df["Labels"] == x
为真时,这个简单方法返回"Values"
列中的值。如果您想知道.values[0]
部分,它就在那里,因为.loc
返回一个序列;在本例中,我们的序列只是一个值,所以我们只需使用.values[0]
来获得它。在相关问题 更多 >
编程相关推荐