首页 > 解决方案 > 如何修复在两列中查找相同日期并根据相同日期连接两个数据框的行

问题描述

我正在尝试组合两个数据框,我在 df1 中有 date 列,在 df2 中有 date1 列。我想将 df1 列日期的第一个值与 df2 date1 列的所有值进行比较,如果在 date2 中找到相似值只是将 df2 的相似值行与 df1 日期的第一行结合起来。然后对 df1 日期列的第二个值执行相同操作,依此类推....如果发现值不止一次,则添加多个行

我已经尝试过 for 循环和 if 条件,但我得到了非常奇怪的结果,许多行带有 NAN 和数据帧行增加

all_df=pd.DataFrame()

df1=pd.read_csv('.csv')

df2=pd.read_csv('.csv')

for i in range(len(df1)):

    for j in range(len(df2)):

        if df1['date1'].iloc[i] == df2['date'].iloc[j]:        
            print('yes')


            df=pd.concat([df1.iloc[[i]],df2.iloc[[j]]],axis=1)
            all_df=all_df.append(df)
        else:
            print('no')

我只想要 df1 date 和 df2 date2 相同的行。

标签: pythonpython-3.xpandas

解决方案


https://pandas.pydata.org/pandas-docs/stable/merging.html#database-style-dataframe-joining-merging

import pandas as pd
all_df = pd.merge(df1, df2, left_on='date1', right_on='date')

推荐阅读