Python 在pandas中创建新列,该列将根据条件获取值

Python 在pandas中创建新列,该列将根据条件获取值,python,pandas,Python,Pandas,我有两个数据库: 数据库一: 有关于观察名称的数据,以及每次观察所采取的不同测量,例如: 和数据库2,其中包含相同名称的观察结果(但不是全部)和每个观察结果的carbom测量值 我想执行以下步骤: -在数据库1中添加空列 -如果Database2中的名称在Database1中,我想获取碳值并将其添加到新列中 如果没有,请将其留空 我试着写些东西,但这确实是个开始,我觉得被卡住了: NaN = np.nan df['carbon'] = NaN for i in df.loc['name']

我有两个数据库: 数据库一: 有关于观察名称的数据,以及每次观察所采取的不同测量,例如:

数据库2,其中包含相同名称的观察结果(但不是全部)和每个观察结果的carbom测量值

我想执行以下步骤: -在数据库1中添加空列 -如果Database2中的名称在Database1中,我想获取碳值并将其添加到新列中

如果没有,请将其留空

我试着写些东西,但这确实是个开始,我觉得被卡住了:

NaN = np.nan
df['carbon'] = NaN


for i in df.loc['name']:
    if i in df_chemo.loc['sample name'] is in df.loc['name']:

我知道这只是开始,但我觉得我不知道如何写我想要的


我的最终目标是:在数据库1中添加一个新列,该列只有在名称匹配时才具有来自数据库2的值。

您要查找的是
合并方法:

df=df.merge(df_chemo,how='left',on='name')
例如:

将熊猫作为pd导入
df1=pd.DataFrame({'x':[1,2,1,4],'y':[11,22,33,44]})
打印(df1,end='\n-------------\n')
df2=pd.DataFrame({'x':[1,2,5,7],'z':list('abcd')})
打印(df2,结束='\n--------------------\n')
打印(df1.merge(df2,on='x',how='left'))
输出:

   x   y
0  1  11
1  2  22
2  1  33
3  4  44
 ------------- 
   x  z
0  1  a
1  2  b
2  5  c
3  7  d
 ------------- 
   x   y    z
0  1  11    a
1  2  22    b
2  1  33    a
3  4  44  NaN

你的数据令人困惑。多个相同的名称(18B)如何具有相同的测量值?他们在不同的时间吗?如果是的话,有什么区别吗?它们是相同的项目,不同的时间。但是我仍然需要通过下面的
merge
函数附加相同的值。它应该可以满足您的需要。是的,我正在尝试,但由于某些原因,我仍然在使用键(name/sample\u name)do
df\u chemo.rename(columns={'sample\u name':'name')时出错。