2017-11-09 1 views
0

Ich möchte in der Lage sein, die Werte unter der Spalte Allergie zu kopieren es gibt drei Sprachen. Ich möchte Pandas Dataframes verwenden, um bestimmte Zellenwerte aus der Zeile Englisch zu Französisch über und Niederländisch darunter zu verschieben. Und nachdem es kopiert wurde, möchte ich die Zeile Englisch löschen.Pandas Dataframe, MOVE Spezifischer Wert von einer Zelle zur anderen

Hinweis: Index ist die folgenden Sprachen. Sie gehen in der Reihenfolge Französisch, Englisch, Niederländisch, Französisch, Englisch, Niederländisch und so weiter. die Werte der einzelnen sind die typischen Antworten also wieder unter der Spalte Allergie

Index  allergy 

french  '' 

english  'MAY CONTAIN: prawn' 

dutch  '' 

french  '' 

english  'MAY CONTAIN: peanuts' 

dutch  '' 

french  '' 

english  'MAY CONTAIN: milk' 

dutch  '' 

zusammenzufassen spezifische Zell Werte von Englisch nach Niederländisch und Französisch Reihen gegeben sind, kopieren.

edit: Ich kann keine Kommentare mehr: Ja das ist das Muster für diesen Datensatz. Diese Ausgabe wird in der Excel-Datei angezeigt.

gewünschte Ausgabe:

Index  allergy 

french  'MAY CONTAIN: prawn' 

dutch  'MAY CONTAIN: prawn' 

french  'MAY CONTAIN: peanuts' 

dutch  'MAY CONTAIN: peanuts' 

french  'MAY CONTAIN: milk' 

dutch  'MAY CONTAIN: milk' 
+0

Können Sie Datenabtastwert hinzufügen - 5, 6 Zeilen mit dem gewünschten Ausgang? – jezrael

+0

Ich habe aktualisiert, um die gewünschte Ausgabe zu zeigen @jezrael – user3821872

+0

OK, danke. Aber stell dir vor, du willst diese Frage mit Daten lösen, die sehen können. Ist es möglich? Ich denke nicht :(Weil ich denke, dass deine realen Daten verschieden sind, nicht immer alle leeren Werte. Oder brauchst du nur die Spalte 'englisch' 2 mal kopieren? Ich denke creating [mcve] (https://stackoverflow.com/help/mcve) – jezrael

Antwort

2

erste Filter nur english Zeilen und erstellen Standardindex:

Index  allergy 

french  'MAY CONTAIN: prawn' 

english  'MAY CONTAIN: prawn' # remove 

dutch  'MAY CONTAIN: prawn' 

french  'MAY CONTAIN: peanuts' 

english  'MAY CONTAIN: peanuts' # remove 

dutch  'MAY CONTAIN: peanuts' 

french  'MAY CONTAIN: milk' 

english  'MAY CONTAIN: milk' # remove 

dutch  'MAY CONTAIN: milk' 

Danach, es ist wie dieses

fertige Ausgabe aussehen sollte

df1 = df.loc['english'].reset_index(drop=True) 
print (df1) 
        allergy 
0 'MAY CONTAIN: prawn' 
1 'MAY CONTAIN: peanuts' 
2  'MAY CONTAIN: milk' 

Dann concat zweimal, Sortieren und letzte Sekunde Ebene entfernen:

df = (pd.concat([df1, df1], keys=('french','dutch')) 
     .sort_index(level=1) 
     .reset_index(level=1, drop=True) 
    ) 
print (df) 
         allergy 
french 'MAY CONTAIN: prawn' 
dutch  'MAY CONTAIN: prawn' 
french 'MAY CONTAIN: peanuts' 
dutch 'MAY CONTAIN: peanuts' 
french  'MAY CONTAIN: milk' 
dutch  'MAY CONTAIN: milk' 
+0

Ich habe' TypeError: sort_index() hat ein unerwartetes Schlüsselwort argument 'level'' – user3821872

+1

Was ist deine Pandas-Version? 'print (pd.show_versions())'? – jezrael

+0

die Version ist 0.16.2, ich brauche es für mein Projekt – user3821872

Verwandte Themen