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