python - 合并具有来自两个不同列的匹配值的 DataFrame - Pandas

标签 python pandas dataframe merge

<分区>

我有两个不同的 DataFrame,我想将它们与 datehours 列合并。我看到了一些 threads在那里,但我找不到解决我的问题的方法。我还读了this文档并尝试了不同的组合,但是效果不佳。

我的两个不同 DataFrame 的示例,

DF1

        date    hours        var1            var2 
0   2013-07-10  00:00:00    150.322617  52.225920   
1   2013-07-10  01:00:00    155.250917  53.365296   
2   2013-07-10  02:00:00    124.918667  51.158249   
3   2013-07-10  03:00:00    143.839217  53.138251
 .....  
9   2013-09-10  09:00:00    148.135818  86.676341
10  2013-09-10  10:00:00    147.833517  53.658016   
11  2013-09-10  12:00:00    149.580233  69.745368   
12  2013-09-10  13:00:00    163.715317  14.524894   
13  2013-09-10  14:00:00    168.856650  10.762779   

DF2

       date      hours      myvar1        myvar2 
0   2013-07-10  09:00:00    1.617         98.56 
1   2013-07-10  10:00:00    2.917         23.60 
2   2013-07-10  12:00:00    19.667        36.15 
3   2013-07-10  13:00:00    14.217        45.16
 .....  
20 2013-09-10   20:00:00    1.517         53.56 
21 2013-09-10   21:00:00    5.233         69.47
22 2013-09-10   22:00:00    13.717        14.25
23 2013-09-10   23:00:00    18.850        10.69 

正如您在两个 DataFrames 中看到的,DF209:00:00 开始,我想加入 DF1 09:00:00,基本上是匹配的日期和时间。到目前为止,我使用以前的线程和上面提到的文档尝试了许多不同的组合。一个例子,

merged_df = DF2.merge(DF1, how = 'left', on = ['date', 'hours'])

这是为右 right DataFrame 引入了 NAN 值。我知道,我不必同时使用 datehours 列,但是,仍然得到相同的结果。我像这样快速地尝试了 R,效果非常好。

merged_df  <- left_join(DF1, DF2, by = 'date')

pandas 中是否有仅将 DatFrames 与匹配值合并而不获取 NaN 值的方法?

最佳答案

pd.merge中使用how='inner':

merged_df = DF2.merge(DF1, how = 'inner', on = ['date', 'hours'])

这将执行“内部连接”,从而忽略每个数据框中不匹配的行。因此,合并后的数据帧的右侧或左侧都没有 NaN。

关于python - 合并具有来自两个不同列的匹配值的 DataFrame - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45175060/

相关文章:

python - django-过滤器 : icontains type of lookup expression doesn't work properly

python - 为什么 tqdm.pandas() 不工作? - 如何解决PanelGroupBy导入问题

python - Pandas Statsmodels 使用 DF 预测器进行回归预测?

python - 更改 DataFrame 中的 NaN 值

python - 如何根据某些列值创建新的数据框?

python - Py2app - 将 "from x import y"添加到 setup.py

python - 多处理python

python - 零填充数据帧正向填充

python - 在 Python 3.4 中重写代码时出现 Bad Zip File 错误

python - 基于列标准的 Panda Dataframe 重采样