簡體   English   中英

Pandas:如何將兩個不完整的 dataframe 連接或合並為一個更完整的 dataframe

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM