python-3.x - 根据索引将值从一个数据帧附加到另一个数据帧
问题描述
我有两个数据框 df1 和 df2。df2 是 df1 的子集
df1 = df1=[[0,1,0,0],
[1,2,0,0],
[2,0,0,0],
[2,4,0,0]]
df1 = pd.DataFrame(df1,columns=['A','B','C','D'])
>>> df1
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 0 0
3 2 4 0 0
>>> df2
C D
2 1 3
3 2 4
我想根据索引将 C 和 D 的值从 df2 附加到 df1。
我的预期输出:
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 1 3
3 2 4 2 4
解决方案
注意:这是inplace
,所以它会覆盖你的df1
而不需要分配回来
引用自文档:
使用来自另一个 DataFrame 的非 NA 值进行就地修改。
对齐索引。没有返回值。
df1.update(df2)
A B C D
0 0 1 0.00 0.00
1 1 2 0.00 0.00
2 2 0 1.00 3.00
3 2 4 2.00 4.00
要转换回int
,请使用DataFrame.astype
:
df1 = df1.astype(int)
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 1 3
3 2 4 2 4
另一种不太优雅的解决方案是使用addition
then fillna
:
(df1 + df2).fillna(df1).astype(int)
或者
df1.add(df2).fillna(df1).astype(int)
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 1 3
3 2 4 2 4
推荐阅读
- java - 无法从 Android Studio 中添加的 Jar 文件导入类
- c# - 如何在不删除现有功能的情况下将第二个触发功能添加到部署的 azure 功能?
- c++ - 初始化一个没有复制构造的类
- c - 如何在 C 中使用 switch 语句将选择添加在一起?
- java - 如何防止“提供的文档路径不能为空”。火库?
- java - 如何从 Java 中的 JSON 字符串中删除元素?
- range - 范围算术
- azure - 我们如何创建基于 azure-disk 的持久卷声明并从 Kubernetes 的 POD 中使用它们?
- css - 只有狐狸。删除搜索字段边框
- java - Selenium Webdriver,如何修复此 NullPointer 异常?