如何在前列的特定列中查找和查找值,并将其值放入 Pandas 中的新列中

how to lookup and find a value in a specific column in column precedent and put its value in a new column in Pandas

我想在 pandas 中执行类似 Vlookup 的操作,我有一个两列数据框,需要检查第二列值 (B) 在第一列 (A) 中是否有效,如果是则相关行和要插入名为 C 的新列中的第二列值,下面是示例 table:

原始数据框是:

A      B

a      -
b      a
c      a
d      b
e      d

首选数据框将是:

A      B      C

a      -      N/A
b      a      -
c      a      -
d      b      a
e      d      b

实际上我是 python 的初学者,但在 excel 这可以通过 A 列和 B 列之间的 Vlookup 轻松完成,结果将在 C 列中恢复。

下面是我写的代码,但它不完整而且不起作用:

import pandas as pd
excel_file ='D:\Test\Test.xlsx'
data=pd.read_excel(excel_file, sheet_name= 0)
df=pd.DataFrame(data,columns=['A','B'])
lr = df.index.values.astype(int)[-1]
for j in range(0,2):
for i in range(1,lr):
C = []
row=0
for i in df.iloc[:,1]:
    df["C"]=df.iloc[:,0].str.match(i)
    if i == "-":
    C[row]=C.append(i)
    row+=1
elif df.at[i,['Index']]:
    idx = next(iter(df[df['Index'] == True].index), 'no match')
    df.at[i,"C"]=df.iloc[idx,1]



print(df)

如果我没记错的话,只要匹配此值,VLOOKUP 就会取一个值(比如“a”)和 returns 另一列(比如“B”列)中的值:VLOOKUP("a", A:A, 2)

如果这是您想要的,您可以创建一个新的(空)列,然后用正确的值填充正确的行,例如:

# Create a new column named C
df["C"] = None

# Fill the cells in C for which the column A matches the condition =="a"
df.loc[df["A"] == "a", "C"] = df.loc[df["A"] == "a", "B"]

您可以使用 np.where 填充 C,然后使用 AB

的字典映射 C
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'},
 'B': {0: '-', 1: 'a', 2: 'a', 3: 'b', 4: 'd'}})

df['C'] = np.where(df['B'].isin(df['A'].values), df['B'], np.nan)
df['C'] = df['C'].map(dict(zip(df.A.values, df.B.values)))

使用列表推导式进行 Vlookup

list1=['a','b','c','d','e']
list2=[np.empty,'a','a','b','d']
df=pd.DataFrame({'A':list1,'B':list2})

df['C']=[df.loc[df['A']==x,'B'].values if x in df['A'].values else '' for x in df['B']]