Hoe combineer ik twee dataframes?

Ik gebruik gegevensframes van Panda. Ik heb een eerste dataframe, zeg D. Ik extraheer er twee dataframes als volgt uit:

A = D[D.label == k]
B = D[D.label != k]

Ik wil Aen Bcombineren zodat ik ze als één DataFrame kan hebben, zoiets als een unie-operatie. De volgorde van de gegevens is niet belangrijk. Wanneer we echter Aen Bvan Dsamplen, behouden ze hun indexen van D.


Antwoord 1, autoriteit 100%

Ik geloof dat je de appendmethode kunt gebruiken

bigdata = data1.append(data2, ignore_index=True)

gebruik het trefwoord ignore_indexniet om hun indexen te behouden …


Antwoord 2, autoriteit 60%

U kunt ook pd.concatgebruiken, wat vooral handig is wanneer u meer dan twee dataframes samenvoegt:

bigdata = pd.concat([data1, data2], ignore_index=True, sort=False)

Antwoord 3, autoriteit 33%

Dacht dit hier toe te voegen voor het geval iemand het nuttig vindt. @ostrokach heeft al vermeld hoe u de gegevensframes over rijen kunt samenvoegen, wat is

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

Als u kolommen wilt samenvoegen, kunt u de volgende syntaxis gebruiken:

df_col_merged = pd.concat([df_a, df_b], axis=1)

Antwoord 4, autoriteit 9%

Er is een andere oplossing voor het geval u met big data werkt en meerdere datasets moet samenvoegen. Het vaak aanroepen van concatkan prestatie-intensief zijn. Als u niet elke keer een nieuwe df wilt maken, kunt u in plaats daarvan de wijzigingen samenvoegen en concatslechts één keer aanroepen:

frames = [ process_file(f) for f in dataset_files ]
result = pd.concat(frames)

(zoals aangegeven hier in de documentenonderaan de sectie):

Opmerking: het is echter vermeldenswaard dat concat(en daarom append)
een volledige kopie van de gegevens maakt, en dat deze voortdurend hergebruikt
functie kan een aanzienlijke prestatiehit opleveren. Als je nodig hebt om te gebruiken
de bewerking over meerdere datasets, gebruik een lijstbegrip.


Antwoord 5, autoriteit 2%

Als u de waarden van het eerste dataframe df1wilt bijwerken/vervangen door de waarden van het tweede dataframe df2. je kunt het doen door de stappen te volgen —

Stap 1:Index van het eerste dataframe (df1) instellen

df1.set_index('id')

Stap 2:Index van het tweede dataframe (df2) instellen

df2.set_index('id')

en werk tot slot het dataframe bij met het volgende fragment —

df1.update(df2)

Other episodes