【问题标题】:Finding Matching Values Between Multiple Dataframes查找多个数据框之间的匹配值
【发布时间】:2022-09-23 20:44:21
【问题描述】:

所以我想根据其他 11 个与参考数据帧之间的匹配值创建一个数据帧。 并且 11 个数据帧有一个名为“序列号”的列,我想将其与参考数据帧上的序列号列进行比较。

由于我没有想到将所有 12 个 excel 文件循环到单独的变量中的方法。我刚刚写了下面的代码。

导入所有需要的库

import pandas as pd

from matplotlib import pyplot as plt

from google.colab import drive

drive.mount(\'/content/drive\')

指定所有excel文件的存储路径

directory = \'/content/drive/MyDrive/Colab Notebooks/Ursa project\'

并且为所有 12 个文件做了filename = pd.read_excel(\'path\')

现在我创建了所有数据框对象,我需要找出这 11 个数据框中的哪些行在序列号列与参考数据框中的序列号列之间具有匹配值。

我失败的尝试是对每个数据帧执行以下操作:

for i in reference_df[\'Serial ID\']:

  df_matches = df1[df1[\'Serial number\'] == i]

df_matches

P.S.:我正在使用 Colab

我正在使用的其中一个 excel 文件太长,所以这里有一个指向序列号和序列号的驱动器链接:https://drive.google.com/drive/folders/1BBTnQY1Be6vHtrrPQyXE18eVPkGU_X5N?usp=sharing

  • 你的预期结果是什么?
  • 我认为我遇到的问题之一是,尽管“序列号”列和“序列号”列之间存在匹配,但这些匹配并不完全匹配。因此,假设两列上都存在 1001,但在序列号单元格中我们有 \"s/n:1001\" 并且在序列号单元格中我们只有 \"1001\" 代码赢了\'无法将其理解为匹配,那么我该如何过滤这些小差异呢?
  • 也许您可以添加示例数据供我们尝试?我们会更好地帮助您

标签: python pandas dataframe


【解决方案1】:

如果您要匹配的是字符串的一部分,则可以使用df.Series.str.contains

df_matches = []
for i in reference_df['Serial ID']:
    df_matches.append(df1[df1['Serial number'].str.contains(i)])

【讨论】:

  • 这是一个有趣的选择,但是尝试我得到“无法使用包含 NA / NaN 值的非布尔数组进行掩码”,所以我搜索它并了解到我只需要使用 fillna() 或 dropna()。甚至在那之后并检查 NaN 值是否丢弃了相同的错误。
  • @ObinaryName1 如果您不介意,您会在帖子中分享您的数据样本吗?
  • 是的,我添加了一个指向我正在使用的两个文件的链接,因为其中一个文件太长了,我需要一个样本来知道匹配项在哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 2015-05-23
相关资源
最近更新 更多