【发布时间】:2021-07-14 14:41:35
【问题描述】:
我想知道如何对整个数据框使用 pandas 应用功能。这是我的代码:
def apply_imputation(df, row):
return df[df.index == row.donor_index]
df.apply(lambda row : apply_imputation(df, row) if row['imp_flag'] == 1 else row, axis=1)
我正在尝试传入行,并将这些行完全替换为来自不同索引(来自 row.donor_index)的行。谁能告诉我哪里出错了?
编辑3: 这是输入数据框的示例:
lsoa11cd postcode_nospace ... donor_possible_indexes donor_index
8119 W01000209 LL208RQ ... NaN NaN
13707 NaN NaN ... [8119] 8119.0
我想要做的是:对于在donor_index 上有值的每一行,将整行替换为在donor_index 中指定的索引行。
这意味着第 13707 行应该被第 8119 行覆盖。相反,在应用上面的函数之后,我得到了:
lsoa11cd ... donor_index
8119 W01000209 ... NaN
13707 (l, s, o, a, 1, 1, c, d) ... (d, o, n, o, r, _, i, n, d, e, x)
如您所见,我们的目标行 13707 出现问题。谁能告诉我这里发生了什么?
【问题讨论】:
-
你能分享你的数据集样本和你的预期输出吗?见minimal reproducible example和How to Ask
-
@Umar.H 我现在已经编辑了问题
-
你能显示多于一行吗?我需要查看输入数据框中的两个索引。
-
我再次编辑了问题以使其更清楚
-
仍然没有输出示例?
标签: python pandas lambda apply