python - 从另一个 Dataframe 的列中为 Dataframe 中的每一行查找特定值

标签 python excel pandas dataframe

我正在寻找替代方法,用 Python 替换 Excel 中使用的函数,尤其是 Pandas。其中一个函数是 COUNTIFS(),我主要使用它来定位固定范围内的特定行值。这主要用于确定一列中的特定值是否存在于另一列中。

Excel 中的示例如下所示:

enter image description here

第一行(列:col1_in_col2)的代码:

=COUNTIFS($B$2:$B$6,A2)

我曾尝试在 Pandas 中重新创建该函数,唯一不同的是可以在两个不同的 DataFrame 中找到这两列,并且 DataFrame 位于字典 (bigdict) 中。代码如下:

import pandas as pd

bigdict = {"df1": pd.DataFrame({"col1": ["0110200_2016", "011037_2016", "011037_2016", "0111054_2016"]}), "df2": pd.DataFrame({"col1" : ["011037_2016", "0111054_2016", "011109_2016", "0111268_2016"]})}

bigdict.get("df1")["df1_in_df2"] = bigdict.get("df1").apply(lambda x: 1 if x["col1"] in bigdict.get("df2")["col1"] else 0, axis=1)

在上面的示例中,第一行的返回值应为零,而其他行的返回值应为 1,因为它可以在另一个 DataFrame 的列中找到。但是,每一行的返回值为 0。

最佳答案

试试这个。我将你的字典拆成两个数据框并比较了它的值。

df1 = pd.DataFrame({"col1": ["0110200_2016", "011037_2016", "011037_2016", "0111054_2016"]})
df2= pd.DataFrame({"col1" : ["011037_2016", "0111054_2016", "011109_2016", "0111268_2016"]})

df1['df1_in_df2'] = np.where(df1.iloc[:,0].isin(list(df2.iloc[:,0])),1,0)

关于python - 从另一个 Dataframe 的列中为 Dataframe 中的每一行查找特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57675017/

相关文章:

python - 为 pandas 列创建类别计数字典

python - Keras自定义损失函数访问python全局变量时的内部机制是什么?

vba - 在 Excel 中返​​回多个匹配值的最快方法

vba - 为什么数字单元格没有 .Characters() 属性?

python - 如何根据与前一行的差异对行进行分组?

python - 对 Pandas 数据框的每一列执行逻辑操作?

python - 什么是基于自定义 http 测试断言的优秀 Python 库?

python - 我如何使用 python web-scraping 从 html 代码中读取这些单元格?

python - 将 Apache Spark Scala 代码转换为 Python

excel - 在包含数据的列中查找最后一行并在下面粘贴其他数据并重复