我有两个数据框,分别为df1和df2。
两者的列名称均与“帐户”相同。
我目前可以使用以下代码访问此数据进行比较:
df1.account.isin(df2.account.values)
我希望将“帐户”作为这样的变量进行访问。
df1.[account].isin(df2.[account].values)
经过研究,我发现了一种可能的解决方案,例如:
df1.loc[:, 'account']
(我怀疑这不是正确的方法。)
从这一点来看,我不确定如何访问isin()方法
因此,我欢迎您以任何其他方式实现此目标的智慧。
非常感谢您的帮助:)
完整的代码块如下:
slgCSV = 'c:\\automation\\python\\a.csv'
armyCSV = 'c:\\automation\\python\\b.csv'
df1 = pd.read_csv(slgCSV)
df2 = pd.read_csv(armyCSV)
d3 = {'Expected': [], 'Actual': []}
df3 = pd.DataFrame(data=d3)
match1 = df1.account.isin(df2.account.values)
match2 = df2.account.isin(df1.account.values)
for r1 in df1[match1].index:
for r2 in df2[match2].index:
# print("R2: " + str(r2))
if df1.account[r1] == df2.account[r2]:
idx = df1.account[r1]
row = {'Expected Row ID': r1+2, 'Actual Row ID': r2+2}
print("Output: " + str(row) + ": " + str(idx))
df1如下所示:
Account
1
2
3
4
5
df2如下所示:
Account
3
1
5
2
4
解决方法如下:
col = "account"
df1[col].isin(df2[col].values)
谢谢您的帮助!
答案 0 :(得分:1)
尝试使用设置的功能
Usercol ='Account' #user entry
Common =
list(set(df1.loc[:Usercol]).intersect(set(df2.loc[:Usercol])))
#fetch index of each data frame using
df1[df1[Usercol].isin(Common)].index
df2[df2[Usercol].isin(Common)].index