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 A
en B
combineren zodat ik ze als één DataFrame kan hebben, zoiets als een unie-operatie. De volgorde van de gegevens is niet belangrijk. Wanneer we echter A
en B
van D
samplen, behouden ze hun indexen van D
.
Antwoord 1, autoriteit 100%
Ik geloof dat je de append
methode kunt gebruiken
bigdata = data1.append(data2, ignore_index=True)
gebruik het trefwoord ignore_index
niet om hun indexen te behouden …
Antwoord 2, autoriteit 60%
U kunt ook pd.concat
gebruiken, 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 concat
kan prestatie-intensief zijn. Als u niet elke keer een nieuwe df wilt maken, kunt u in plaats daarvan de wijzigingen samenvoegen en concat
slechts éé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 daaromappend
)
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 df1
wilt 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)