pandasシリーズ
object x
Ezh2 2
Hmgb 7
Irf1 1
これをそれぞれGeneとCountという列名を持つデータフレームとして保存したい
x_df = pd.DataFrame(x,columns = ['Gene','count'])
しかし、それは機能しません。私が望む最終的なフォームは
Gene Count
Ezh2 2
Hmgb 7
Irf1 1
これを行う方法を提案できますか
Dictを作成し、これをデータパラメーターとしてデータフレームコンストラクターに渡すことができます。
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
あるいは、シリーズからdfを作成することもできます。インデックスが使用されるときにreset_index
を呼び出してから、列の名前を変更する必要があります。
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
.to_frame()
メソッドを使用することもできます。
シリーズの場合、「Gene」はすでにインデックスであり、DataFrameに変換した後もインデックスのままであると想定しています。 .to_frame()
のname
引数は、列に名前を付けます。
x = x.to_frame('count')
両方を列として使用する場合は、インデックスをリセットできます。
x = x.to_frame('count').reset_index()
「Gene」という名前のインデックスを持つpd.Series
オブジェクトx
がある場合、reset_index
を使用してname
引数を指定できます。
df = x.reset_index(name='count')
デモは次のとおりです。
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