python - 如何根据列名将一个数据框中的列值复制到另一个数据框中?
问题描述
如果我有一个数据框,请说:
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 的零。
解决方案
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
推荐阅读
- python - Pip 未安装 TensorFlow Nightly Mac
- recursion - 在文件夹上递归执行 latexmk -c
- database - Presto 识别唯一值
- ffmpeg - 使用 ffmpeg 批量提取多个 mp3 文件的前 10 秒
- node.js - 更新的 API 在本地工作,但在 Heroku 上不起作用,即使它使用更新的代码
- javascript - 使用网络音频 API 进行峰值检测?
- c++ - C++ googlemock 不会在愚蠢的例子中编译
- swift - 为什么编译器在使用 ?? 时会给出错误(中止陷阱:6)?字典上的运算符
- javascript - 给出提示后,如何将函数的结果输出到同一个 HTML 页面?
- c# - 如何在脚本中使用 bool 参数开始两个动画之间的过渡?