我正在寻找替代方法,用 Python 替换 Excel 中使用的函数,尤其是 Pandas。其中一个函数是 COUNTIFS(),我主要使用它来定位固定范围内的特定行值。这主要用于确定一列中的特定值是否存在于另一列中。
Excel 中的示例如下所示:
第一行(列: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/