2017-11-28 2 views
0

Ich habe zwei Pandas Datenrahmen mit folgenden Spalten:Pandas Datenrahmen merge erfolglos

dataframe 1:

A, B, C 

dataframe 2:

A, B, C, Count 

hier ist das Skript:

dfcount = pd.read_csv ("df1.csv") 
df = pd.read_csv ("df2.csv") 

df = df.dropna(axis=1,how="all") 
merged = dfcount.merge(df, on=['A','B','C]) 
merged.to_csv("merge.csv", index=False) 

, aber das zusammengefügte Ergebnis enthält nur den Kopfzeilennamen, also habe ich die Datei überprüft, um Unterschiede zu finden. Das Problem ist, dass die Daten in dataframe 1 wie folgt gespeichert:

A, B, C 
Text Active English 

aber in dataframe 2 gespeichert sind, wie:

A, B, C, Count 
" Text " " Active " " English " 100 

Wie kann ich lösen diesen Konflikt in zwei Pandas dataframe?

+1

Die Leerzeichen in beiden Datenfeldern in allen Spalten entfernen und dann zusammenführen. Streifen mit 'df [['A', 'B', 'C']] = df [['A', 'B', 'C']]. Anwenden (Lambda x: x.str.strip()) ' – Dark

+1

und ersetzen' '' mit leeren char –

+0

@ Bharath, @ Yuan Danke. – user3806649

Antwort

1

Streifen der Räume in dem Datenrahmen .str.strip

dfcount[['A', 'B',' C']] = dfcount[['A', 'B',' C']].apply(lambda x : x.str.strip()) 
df[['A', 'B',' C']] = df[['A', 'B',' C']].apply(lambda x : x.str.strip()) 

mit Dann sind Sie gut, um den Datenrahmen zu verschmelzen.

merged = dfcount.merge(df, on=['A','B','C]) 
Verwandte Themen