Ich habe derzeit einen Datenrahmen, der so aussieht:
Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4
0 Sample Number Group Number Sample Name Group Name
1 1.0 1.0 s_1 g_1
2 2.0 1.0 s_2 g_1
3 3.0 1.0 s_3 g_1
4 4.0 2.0 s_4 g_2
Ich suche nach einer Möglichkeit, die Kopfzeile zu löschen und die erste Zeile zur neuen Kopfzeile zu machen, damit der neue Datenrahmen folgendermaßen aussehen würde:
Sample Number Group Number Sample Name Group Name
0 1.0 1.0 s_1 g_1
1 2.0 1.0 s_2 g_1
2 3.0 1.0 s_3 g_1
3 4.0 2.0 s_4 g_2
Ich habe versucht if 'Unnamed' in df.columns:
, den Datenrahmen ohne Header df.to_csv(newformat,header=False,index=False)
zu erstellen, aber ich komme anscheinend nicht weiter.
Wenn Sie einen Einzeiler wünschen, können Sie Folgendes tun:
df.rename(columns=df.iloc[0]).drop(df.index[0])
quelle
@ostrokach Antwort ist am besten. Höchstwahrscheinlich möchten Sie dies bei allen Verweisen auf den Datenrahmen beibehalten und profitieren daher von inplace = True.
df.rename(columns=df.iloc[0], inplace = True) df.drop([0], inplace = True)
quelle
Hier ist ein einfacher Trick, der Spaltenindizes "an Ort und Stelle" definiert. Da
set_index
Sätze Reihe Indizes vorhanden ist , können wir die gleiche Sache für Spalten tun , indem Sie den Datenrahmen zur Umsetzung, Setzen des Index und ihre Umsetzung zurück:df = df.T.set_index(0).T
Beachten Sie die ändern müssen möglicherweise
0
in ,set_index(0)
wenn Ihre Zeilen bereits einen anderen Index haben.quelle
Ein weiterer Einzeiler mit Python-Tausch:
df, df.columns = df[1:] , df.iloc[0]
Dadurch wird der Index nicht zurückgesetzt
Das Gegenteil funktioniert jedoch nicht wie erwartet
df.columns, df = df.iloc[0], df[1:]
quelle
- Ein anderer Weg, dies zu tun
df.columns = df.iloc[0] df = df.reindex(df.index.drop(0)).reset_index(drop=True) df.columns.name = None Sample Number Group Number Sample Name Group Name 0 1.0 1.0 s_1 g_1 1 2.0 1.0 s_2 g_1 2 3.0 1.0 s_3 g_1 3 4.0 2.0 s_4 g_2
Wenn es dir gefällt, drücke den Pfeil nach oben. Vielen Dank
quelle
header = table_df.iloc[0] table_df.drop([0], axis =0, inplace=True) table_df.reset_index(drop=True) table_df.columns = header table_df
quelle
Die beste Vorgehensweise und der beste OneLiner :
df.to_csv(newformat,header=1)
Beachten Sie den Header-Wert:
Die Kopfzeile bezieht sich auf die Zeilennummer (n), die als Spaltennamen verwendet werden sollen. Machen Sie keinen Fehler, die Zeilennummer ist nicht die df, sondern aus der Excel-Datei (0 ist die erste Zeile, 1 ist die zweite und so weiter).
Auf diese Weise erhalten Sie den gewünschten Spaltennamen und müssen keine zusätzlichen Codes schreiben oder neue df erstellen.
Gut ist, dass die ersetzte Zeile gelöscht wird.
quelle