[Python] Python - Add Missing Data to New Dataframe

Discussão em 'Python' iniciado por Stack, Setembro 26, 2024.

  1. Stack

    Stack Membro Participativo

    I am comparing two dataframes by looping through both and determining if data (row) from one does not exist in the other. If there is no match, I want to add that specific row to a third dataframe. I was able to achieve this with the append() method, but Python warns me that it is deprecated and tells me to use concat instead. Unfortunately, I cannot get concat to achieve the same result.

    import pandas as pd

    df1 = pd.DataFrame(
    {
    "Animal": ["Corgi",
    "Labrador",
    "Orange Cat",
    "Black Cat"],
    "Owner": ["Bob",
    "Joe",
    "Sara",
    "Glen"]
    })

    df2 = pd.DataFrame(
    {
    "Animal": ["Corgi",
    "Labrador",
    "Black Cat"],
    "Owner": ["Bob",
    "Joe",
    "Glen"]
    })

    dfF = pd.DataFrame(columns=["Animal", "Owner"])

    df1Sort = df1.sort_values(by=["Animal"]).reset_index(drop=True)
    df2Sort = df2.sort_values(by=["Animal"]).reset_index(drop=True)

    for ind in df1Sort.index:
    for subInd in df2Sort.index:
    if df1Sort["Animal"][ind] == df2Sort["Animal"][subInd]:
    print("Found match:",
    df1Sort["Animal"][ind],
    "-",
    df1Sort["Owner"][ind])
    break
    elif df2Sort.index[subInd] == df2Sort.index[-1]:
    print("No match for:",
    df1Sort["Animal"][ind],
    "-",
    df1Sort["Owner"][ind])
    dfF = pd.concat([dfF, df1Sort.iloc[ind]], axis=0, ignore_index=True)
    break

    print(dfF)

    The output is:

    • Found match: Black Cat - Glen
    • Found match: Corgi - Bob
    • Found match: Labrador - Joe
    • No match for: Orange Cat - Sara
    • Animal Owner 0
    • 0 NaN NaN Orange Cat
    • 1 NaN NaN Sara
    I would like the new dataframe to read as such:

    • Animal Owner
    • 0 Orange Cat Sara

    How do I alter the concat line to achieve this?

    Continue reading...

Compartilhe esta Página