首页 > 解决方案 > 如何根据列名将一个数据框中的列值复制到另一个数据框中?

问题描述

如果我有一个数据框,请说:

df1 = pd.Dataframe(rand(1,5)*0, columns = ['A','B','C','D','E'])

和另一个数据框,例如:

df2 = pd.DataFrame(rand(1,3), columns = ['B','D','E'])

有没有办法将 df2 中的值添加到 df1,或者根据列名将 df1 中的值替换为 df2 中的值?我试图在一个循环中执行此操作,并且所有迭代都将返回不同的 df2,具有不同的值和列(但列集始终是 df1 的子集)。df1 全为零,我想用从 df2 获得的值填充列。我的目标是保持相同的格式,以便每次迭代的最终 df 长度相同,只有来自 df2 的值替换具有匹配名称的列中来自 df1 的零。

标签: pythonpandas

解决方案


IIUC 用途DataFrame.update

np.random.seed(2021)
df1 = pd.DataFrame(np.random.rand(4,5)*0, columns = ['A','B','C','D','E'])


df2 = pd.DataFrame(np.random.rand(2,3), columns = ['B','D','E'])

print (df1)
     A    B    C    D    E
0  0.0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0  0.0

print (df2)
          B         D         E
0  0.452145  0.201850  0.569305
1  0.195096  0.583704  0.476313

df1.update(df2)

print (df1)
     A         B    C         D         E
0  0.0  0.452145  0.0  0.201850  0.569305
1  0.0  0.195096  0.0  0.583704  0.476313
2  0.0  0.000000  0.0  0.000000  0.000000
3  0.0  0.000000  0.0  0.000000  0.000000

推荐阅读