Ich habe eine Pandaserie
object x
Ezh2 2
Hmgb 7
Irf1 1
Ich möchte dies als Dataframe mit den Spaltennamen Gene bzw. Count speichern. Ich habe es versucht
x_df = pd.DataFrame(x,columns = ['Gene','count'])
aber es funktioniert nicht. Die endgültige Form, die ich will, ist
Gene Count
Ezh2 2
Hmgb 7
Irf1 1
Können Sie uns vorschlagen, wie das geht
Sie können ein Diktat erstellen und als Datenparameter an den Dataframe-Konstruktor übergeben:
In [235]:
df = pd.DataFrame({'Gene':s.index, 'count':s.values})
df
Out[235]:
Gene count
0 Ezh2 2
1 Hmgb 7
2 Irf1 1
Alternativ können Sie eine DF aus der Serie erstellen. Sie müssen reset_index
aufrufen, da der Index verwendet wird, und die Spalten dann umbenennen:
In [237]:
df = pd.DataFrame(s).reset_index()
df.columns = ['Gene', 'count']
df
Out[237]:
Gene count
0 Ezh2 2
1 Hmgb 7
2 Irf1 1
Sie können auch die .to_frame()
-Methode verwenden.
Wenn es sich um eine Serie handelt, gehe ich davon aus, dass 'Gene' bereits der Index ist und nach der Konvertierung in einen DataFrame der Index bleibt. Das name
-Argument von .to_frame()
benennt die Spalte.
x = x.to_frame('count')
Wenn Sie beide als Spalten verwenden möchten, können Sie den Index zurücksetzen:
x = x.to_frame('count').reset_index()
Wenn Sie ein pd.Series
-Objekt x
mit dem Index 'Gene' haben, können Sie reset_index
verwenden und das name
-Argument angeben:
df = x.reset_index(name='count')
Hier ist eine Demo:
x = pd.Series([2, 7, 1], index=['Ezh2', 'Hmgb', 'Irf1'])
x.index.name = 'Gene'
df = x.reset_index(name='count')
print(df)
Gene count
0 Ezh2 2
1 Hmgb 7
2 Irf1 1