如何在检查了两个数据帧的条件后,将一列值从一个数据帧添加到另一个数据帧

2024-04-19 19:17:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python初学者。我想学习如何根据函数中应用的条件将一个数据帧中的2列(可以更多)信息添加到另一个数据帧中。 例如,我有两个不同的数据帧,例如

Test = {'CP': ['cyp','klm','skp'],
    'Amount': [22000,25000,27000],
    'Date': ['20-07-20','20-09-20','15-06-20'],
    'Pair': ['EUR','USD','AUD'],
    'Del':['Y','K','l']}
df1 = pd.DataFrame(Test,columns= ['CP', 'Amount','Date','Pair'])

Test2 = {'ID': ['ABC','DEF','GHO','JKL','HOP'],
    'Price': [2000,5000,200,50000,5000],
    'Date2': ['21-07-20','21-09-20','14-06-20','24-07-20','24-07-20'],
    'ccy': ['EUR','PLN','CHN','EUR','USD']}
df2 = pd.DataFrame(Test2,columns= ['ID', 'Price','Date2','ccy'])

然后,我通过检查df1中的同一对和df2中的同一ccy(如果数量大于1000)以及其他条件来执行操作,并放置一个标志,例如:

df2["FlAG"] = ""

list_ccy_pair = df2['ccy'].values.tolist()    
for i in range(len(df1)):
    for j in range(len(list_ccy_pair)):
        if list_ccy_pair[j] == df1['Pair'][i]:
            if df2['Price'][j] > 1000  and df1['Amount'][i] > df2['Price'][j]:
                df2['FlAG'][j] = "yes"

当上述条件满足且我有我的标志时,我想将来自对应“Pair”列的第一个数据帧的信息添加到第二个数据帧,并获得重建的df2,如下所示:

Test3 = {'ID': ['ABC','DEF','GHO','JKL','HOP'],
    'Price': [2000,5000,200,50000,5000],
    'Date2': ['21-07-20','21-09-20','14-06-20','24-07-20','24-07-20'],
    'ccy': ['EUR','PLN','CHN','EUR','USD'],
    'CP': ['cyp','','','','skp'],
    'Date': ['20-07-20','','','','15-06-20']}
df2_new = pd.DataFrame(Test3,columns= ['ID', 'Price','Date','ccy','CP','Date'])

如何将相应的信息从df1附加到df2? 提前谢谢