我有三个数据帧:
框架1:
import pandas as pd
import numpy as np
d = {'instrument': ['a','b','c'], 'CUSIP': ['US1',np.NaN,'US2'],'ISIN':[np.NaN,"EU1",np.NaN]}
ip = pd.DataFrame(data=d)
ip
框架2:
cusipid={'CUSIP':['a','c'],'ID':["a1","c1"]}
cusipmap=pd.DataFrame(data=cusipid)
cusipmap
框架3:
isinid={'ISIN':['b','c'],'ID':["b1","c2"]}
isinmap=pd.DataFrame(data=isinid)
isinmap
我想在第1帧中添加一列,通过首先在第2帧上连接CUSIP,然后在第3帧上使用ISIN,保持第1帧中的行数不变(左连接)。但是,我只想在第2帧连接中生成NaN时,在第3帧上执行ISIN连接。因此,我要寻找的输出类似于:
op= {'instrument': ['a','b','c'], 'CUSIP': ['US1',np.NaN,'US2'],'ISIN':[np.NaN,"EU1",np.NaN],'ID':['a1','b1','c1']}
op = pd.DataFrame(data=op)
op
pd.merge是否具有执行上述操作的功能
您可以使用^{} 创建新的} 或^{} 替换缺少的值:
Series
,然后使用^{使用
merge
的解决方案:我的方法是合并两个数据帧,然后使用
.loc
构建所需的列。示例如下:相关问题 更多 >
编程相关推荐