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'))
我有 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'))