首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于标签并添加到新列(Vlookup)的同一数据帧中查找值

基于标签并添加到新列(Vlookup)的同一数据帧中查找值
EN

Stack Overflow用户
提问于 2018-03-13 08:11:06
回答 2查看 850关注 0票数 0

我有一张表格,里面有实验室的结果,包括“盲目复制样本”。这些基本上是两次采集的样本,第二个样本被赋予了一个无法描述的标签。相应的原件;样本在一个单独的列中显示。

代码语言:javascript
复制
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中添加一个列,它保存了副本的原始示例中的“值”。因此,一个新列('Original_value'),其中对于'Blank1‘输入'A1-1’的值,为'Blank2‘输入'A1-4’的值,等等。对于'Duplicate_of‘字段为空的行,这个新列也是空的。

在excel中,使用Vlookup非常容易,但我在Pandas中还没有看到一种简单的方法(除了自己加入整个表之外?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-13 09:16:55

下面是最简单的方法,只需一行:

代码语言:javascript
复制
df["Original_value"] = df["Duplicate_of"].apply(lambda x: "" if x == "" else df.loc[df["Labels"] == x, "Values"].values[0])

解释:

这简单地将lambda函数应用于列"Duplicate_of"的每个元素。

首先,我们检查项目是否为空字符串,如果是空字符串,则返回空字符串:

代码语言:javascript
复制
"" if x == ""

相当于:

代码语言:javascript
复制
if x == "" return ""

如果不是空字符串,则执行以下命令:

代码语言:javascript
复制
df.loc[df["Labels"] == x, "Values"].values[0]

当条件"Values"为真时,这个简单的返回列df["Labels"] == x中的值。如果您对.values[0]部件感到好奇,那么它的存在是因为.loc返回了一个系列;在本例中,我们的系列只是一个值,所以我们只需使用.values[0]获得它。

票数 0
EN

Stack Overflow用户

发布于 2018-03-13 08:22:52

不是一个内存高效的答案,但这是可行的。

代码语言:javascript
复制
import numpy as np
dictionary = dict(zip(Labels, Values))
df["Original_value"] = df["Duplicate_of"].map(lambda x: np.nan if x not in dictionary else dictionary[x])

对于Original_Value中的其余值,它给出了NaN。你可以决定你想要什么代替它。

新列的类型将不是可以在需要时也可以更改的整数。

对于@jezrael的注释,同样的事情可以作为

代码语言:javascript
复制
import numpy as np
dictionary = dict(zip(Labels, Values))
df["Original_value"] = df["Duplicate_of"].map(dictionary)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49251163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档