python - 连接具有重叠索引但从不重叠值的 Pandas DataFrame
问题描述
我有两个任意形状的 DataFrame:
A B C
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 NaN
3 A3 NaN NaN
4 A4 NaN NaN
和
A B C
2 NaN NaN C2
3 NaN B3 C3
4 NaN B4 C4
5 A5 B5 C5
6 A6 B6 C6
这两个 DataFrame 具有重叠的索引。在有重叠的地方,对于给定的列,在一个 DataFrame 中有NaN
一个 non,而在另一个 DataFrame 中有一个NaN
。我怎样才能连接这些,以便我可以实现具有所有值且没有NaN
s 的 DataFrame:
A B C
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
4 A4 B4 C4
5 A5 B5 C5
6 A6 B6 C6
我提出的解决方案是:
df3 = pd.concat([pd.concat([df1[col].dropna(), df2[col].dropna()]) for col in df1.columns], axis=1)
但是,理想情况下,我不会逐列工作。
解决方案
df = df1.combine_first(df2)
print(df)
A B C
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
4 A4 B4 C4
5 A5 B5 C5
6 A6 B6 C6
推荐阅读
- algorithm - How could I determine the worst case in this code?
- r - data.table not reading characters appropriately
- reactjs - TypeScript onClick 预期 0 个参数,但得到 1 个
- mongodb - MongoDB为一致读取设置写关注的最佳实践是什么
- tensorflow - Tensorflow 2.3.0 -> 2.2.0 可比性:ValueError:未知层:功能性
- html - 如何使 svg 文本和绝对定位的 html 文本相同?
- javascript - 如何解决此下拉菜单显示问题?
- realm - Realm Javascript 按日期过滤但忽略年份
- c++ - BeagleBoneBlack 中的 NET-SNMP 版本不正确
- python - 从源代码配置 Python3,以便它可以跨 Linux 发行版使用