[英]Pandas: How to concat or merge two incomplete dataframe into one more complete dataframe
我想将两个不完整的数据框与关于相似索引的相同数据(理论上)连接起来。 我试过 pd.concat 但我没能得到我需要的东西。
这是我想做的一个简单示例:
df1 = pd.DataFrame(
{
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B4"],
"C": ["C0", "C1", "C2", "B5"],
"D": [np.nan,np.nan,np.nan,np.nan,]
},
index=[0, 1, 2, 3],)
df2 = pd.DataFrame(
{
"A": ["A0", "A1", "A5", "A6"],
"B": ["B0", "B1", "B5", "B6"],
"C": [np.nan,np.nan,np.nan,np.nan,],
"D": ["D0", "D1", "D5", "D6"],
},
index=[0, 1, 5, 6]
)
res_expected = pd.DataFrame(
{
"A": ["A0", "A1", "A2", "A3", "A5", "A6"],
"B": ["B0", "B1", "B2", "B3", "B5", "B6"],
"C": ["C0", "C1", "C2", "B5",np.nan,np.nan,],
"D": ["D0", "D1", np.nan,np.nan,"D5", "D6"],
},
index=[0, 1, 2, 3, 5, 6]
)
有人有想法吗?
谢谢 !
您可以使用combine_first()
,如下所示:
df_result = df1.combine_first(df2)
combine_first()
的工作原理如下:
通过用另一个 DataFrame 中的非空值填充一个 DataFrame 中的 null 值来组合两个 DataFrame 对象。生成的 DataFrame 的行和列索引将是两者的并集。
结果:
print(df_result)
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 NaN
3 A3 B4 B5 NaN
5 A5 B5 NaN D5
6 A6 B6 NaN D6
res_expected=df1.append(df2,ignore_index=True)
这应该工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.