python - 比较来自两个 pandas 数据框的值,与顺序无关

标签 python python-3.x pandas unordered

我是数据科学的新手。我想检查一个数据框中的哪些元素存在于另一个数据框中,例如

df1 = [1,2,8,6]
df2 = [5,2,6,9]

# for 1 output should be False

# for 2 output should be True

# for 6 output should be True

等等

注意:我有矩阵而不是向量。

我试过使用下面的代码:

import pandas as pd
import numpy as np

    priority_dataframe = pd.read_excel(prioritylist_file_path, sheet_name='Sheet1', index=None)

    priority_dict = {column: np.array(priority_dataframe[column].dropna(axis=0, how='all').str.lower()) for column in
                         priority_dataframe.columns}
    keys_found_per_sheet = []
    if file_path.lower().endswith(('.csv')):
        file_dataframe = pd.read_csv(file_path)
    else:
        file_dataframe = pd.read_excel(file_path, sheet_name=sheet, index=None)

    file_cell_array = list()
    for column in file_dataframe.columns:
        for file_cell in np.array(file_dataframe[column].dropna(axis=0, how='all')):
            if isinstance(file_cell, str) == 'str':
                file_cell_array.append(file_cell)
            else:
                file_cell_array.append(str(file_cell))

    converted_file_cell_array = np.array(file_cell_array)

    for key, values in priority_dict.items():
        for priority_cell in values:
            if priority_cell in converted_file_cell_array[:]:
                keys_found_per_sheet.append(key)
                break

我在 if priority_cell in converted_file_cell_array[:] 中做错了什么?

还有其他有效的方法吗?

最佳答案

您可以从每个数据帧中获取 .values,将它们转换为 set(),然后获取集合交集。

set1 = set(df1.values.reshape(-1).tolist())
set2 = set(dr2.values.reshape(-1).tolist())
different = set1 & set2

关于python - 比较来自两个 pandas 数据框的值,与顺序无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49623249/

相关文章:

python - 操作变量时出现 UnboundLocalError 产生不一致的行为

python pandas,一个函数将根据另一行的条件应用于一行中元素的组合

python - Python中将两个字典合并为字典的字典

Python打印函数不按顺序打印

python - 排除 Pandas 数据框中索引行的最有效方法

python - 在使用 gspread-pandas 模块时,我想更改模块的 default_dir

python - 使用 `pandas.cut()` ,我如何获得整数分箱并避免获得负的最低限度?

python - 错误 : Error when checking model input: expected dense_input_6 to have shape (None, 784) 但得到形状为 (784L, 1L) 的数组

python - 找到双线;更快的方法

python - 没有频率的差异pandas.DateTimeIndex