列到列的子集的向量化分配

时间:2019-01-24 10:22:40

标签: python pandas

我有一个Pandas DataFrame,其中包含 i 行和 j 列。我想用另一个具有相同 i 行但 k 行的第二个DataFrame中的所有值替换此DataFrame中的值>列,其中 k j 的子集。

这是有效的:

for col in df2.columns:
    df1[col] = df2[col]

是否有一种更快,更无循环的方法?

1 个答案:

答案 0 :(得分:3)

IIUC,您可以做

df1[df2.columns] = df2

假设索引和列标签与您所说的相符

这里,我们取df1的子集仅传递感兴趣的列,只要索引和列标签匹配,就可以像这样直接分配。 无需在这里进行迭代

如果索引标签不匹配,但形状匹配,则可以分配numpy数组值:

df1[df2.columns] = df2.values

这会将值分配为原始值,因为pandas不需要检查索引标签或列标签的对齐方式,并且应该能够直接分配