python - 如何比较来自 2 个不同数据帧的数据
问题描述
我正在尝试在 Python 中比较来自 2 个 pandas 数据帧的数据。我得到了 1 列,它们在它们中都是通用的,但是它们的名称不同。第一个列的名称是“文件”,第二个列的名称是“Código da transação”。无论如何,我创建了这个函数来比较数据,但我在那些行中得到了错误......为什么会发生这种情况?
def checar_valor(a,b):
for i in range(len(a)):
if b.isin([a['File'][i]]): #ERROR
print("O valor %s está presente nos dois dataframes" % a['File'][i])
else:
print("O valor %s está presente apenas no dataframe %s" % (a['File'][i], "a"))
for q in range(len(b)):
if a.isin([b['Código da transação'][q]]): #ERROR
print("O valor %s está presente nos dois dataframes" % b['Código da transação'][q])
else:
print("O valor %s está presente apenas no dataframe %s" % (b['Código da transação'][q], "b"))
Traceback (most recent call last):
File "C:/Users/nick/PycharmProjects/WebCrawler/Extranet/testezin.py", line 75, in <module>
checar_valor(rs, ga)
File "C:/Users/nick/PycharmProjects/WebCrawler/Extranet/testezin.py", line 64, in checar_valor
if b.isin([a['File'][i]]): #ERRO
File "C:\Users\nick\PycharmProjects\WebCrawler\venv\lib\site-packages\pandas\core\generic.py", line 1576, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
解决方案
使用pd.DataFrame.where
您可以获得一个包含两个 DataFrame 中且位于同一位置的值的 DataFrame
df1.where(df1.values==df2.values)
编辑:根据您的评论,这应该有效:
A = pd.DataFrame([4,2,3], columns = ['Number'])
B = pd.DataFrame([2,5,6], columns = ['Number'])
a = set(A['Number'])
b = set(B['Number'])
my_set = set(a | b) #put every value in a set, so that you don't check each column twice
for i in my_set:
if i in A['Number'].values:
if i in B['Number'].values:
print(str(i) + ' is in both DataFrames')
else :
print(str(i) + ' is in A but not in B')
else: #if the value is not in A, it is obviously in B
print(str(i) + ' is in B but not in A')
输出:
2 is in both DataFrames
3 is in A but not in B
4 is in A but not in B
5 is in B but not in A
6 is in B but not in A
推荐阅读
- dart - 断点调试 AngularDart
- json - 使用更改的 JSON 属性解组
- javascript - 什么是正确的 React 架构?
- c++ - 如何按降序打印字符串中每个字母的频率c ++?
- dictionary - 当键是 Lua 中另一个字典中的值时,如何从字典中获取值?
- date - 如何从 Java 8 Date API 中的回历日期中减去回历年份
- ios - SKStoreReviewController.requestReview() 在 Live App 中不起作用
- android - 错误:任务“:app:processDebugResources”执行失败。错误:多个库的包名称为“android.support.graphics.drawable”
- javascript - 未捕获的类型错误:无法读取 Object.onLoad 处未定义的属性“setAttribute”
- bash - 在 bash 脚本中回显一个带有索引的变量