【问题标题】:How to Join CSV in Python Pandas Comparing 2 CSV如何在 Python Pandas 中加入 CSV 比较 2 CSV
【发布时间】:2019-04-18 15:34:06
【问题描述】:

我有 2 个 csv 文件,比如说 A.csvB.csv。 A.csv 有 a、b、c、d 列,B.csv 有 x、y、z、t 列。我想搜索如果列 x 中存在列 a 中的条目,则打印 z 和 d 如果该行。

喜欢,

for each i in A
    if A.[a][i] exist in B.x
       print A.[d][i] + B.[z][i]

-- 我已经有了下面的代码。我只需要学习如何解决这个问题的代码

 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt


A = pd.read_csv('path1')
B = pd.read_csv('path2')

【问题讨论】:

  • 能否提供AB 的示例数据框以及预期输出?

标签: python pandas csv numpy


【解决方案1】:

想象一下您的 csv 数据文件如下所示:

print(df1)

    A   B   C   D
0   1   4   7   4
1   2   5   8   5
2   3   6   9   8

print(df2

    X   Y   Z   T
0   1   11  6   8
1   5   12  8   0
2   2   13  0   4

考虑到左表是 df1 而右表是 df2,一个简单的合并就可以解决您的问题

df  = df1.merge(df2,left_on='A',right_on='X')[['Z','D']]

print(df)

    Z   D
0   6   4
1   0   5

这将从提到的列返回匹配的行元素。 (这里是 Z,D)

【讨论】:

    【解决方案2】:

    我认为最简单的解决方案是使用左连接:

    >>> print(A)
       a  b  c  d
    0  1  2  3  4
    1  2  3  4  5
    2  4  4  5  6
    
    >>> print(B)
    
       x   y   z   t
    0  1  20  30  40
    1  3   4   5   6
    
    >>> result = A.merge(left_on='a', right=B, right_on='x', how='left')[['z', 'd']].dropna()
    
    >>> print(result)
          z  d
    0  30.0  4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2019-04-10
      • 2018-10-01
      • 1970-01-01
      • 2021-03-08
      相关资源
      最近更新 更多