Python - 根据其他数据框列中满足的条件填充 PANDAS 数据框列

Python - Population of PANDAS dataframe column based on conditions met in other dataframes' columns

我有 3 个数据帧(df1、df2、df3),它们的结构相同(# 和 rows/columns 的标签),但填充了不同的值。

我想根据 df1 和 df2 中关联的 column/rows 中的值填充 df3。我正在使用 FOR 循环和自定义函数执行此操作:

for x in range(len(df3.columns)):
    df3.iloc[:, x] = customFunction(x)

我想使用这个自定义 IF/ELSE 函数填充 df3:

def customFunction(y):
    if df1.iloc[:,y] <> 1 and df2.iloc[:,y] = 0:
        return "NEW"
    elif df2.iloc[:,y] = 2:
        return "OLD"
    else:
        return "NEITHER"

我理解为什么我在 运行 执行此操作时收到错误消息,但我不知道如何将此功能应用于系列。我可以用更复杂的代码逐行完成,但我希望有一个更有效的解决方案?我担心我的方法有缺陷。

是的,尽量避免 pandas 中的循环,它的效率很低,并且是为与底层 numpy 向量化一起使用而构建的。

您想使用应用功能。

类似于:

df3['new_col'] = df3.apply(lambda x: customFunction(x))

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html

v1 = df1.values
v2 = df2.values

df3.loc[:] = np.where(
    (v1 != 1) & (v2 == 0), 'NEW',
    np.where(v2 == 2, 'OLD', 'NEITHER'))