如何在Python Pandas中加入CSV比较2 CSV

时间:2018-11-15 13:54:29

标签: python pandas csv numpy

我有2个csv文件,例如 A.csv B.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')

2 个答案:

答案 0 :(得分:2)

想象一下您的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)

答案 1 :(得分:1)

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

>>> 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