我有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')
答案 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