it-swarm.com.de

zuweisen von Spaltennamen zu einer Pandaserie

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

12
Ssank

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
16
EdChum

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()
14
Sealander

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
0
jpp