2016-06-28 12 views
0

カラム名を設定し、私はこのようなパンダのデータフレームを持っている:パンダデータフレームは、行をドロップし

 1  2  3 
0 
NaN ingr contr count 
2.0 water 0.02 275 
3.0 oil 0.23 11 
..... 

と、私はこれに転送したい:私はpd.droppd.set_index()を使用しようとしました

ingr contr count 
water 0.02 275 
oil 0.23 11 
.... 

私はこれを行う方法を理解することはできません。誰でも私を助けることができますか?

答えて

1

ilocインデクサしてみてください:

In [66]: df 
Out[66]: 
      1  2  3 
NaN ingr contr count 
2.0 water 0.02 275 
3.0 oil 0.23  11 

In [67]: df.columns = df.iloc[0] 

In [68]: df = df.iloc[1:].reset_index() 

In [69]: df 
Out[69]: 
nan index ingr contr count 
0  2.0 water 0.02 275 
1  3.0 oil 0.23 11 

PSをそれから正しくデータを読み込むことがはるかに効率的である非常にread_csv()/read_excel/read_table /らのheaderskiprowsなどのパラメータを使用して開始します。 reset_indexrename_axisとC関数

+0

をあなたはこれで私をたくさん助けたMaxUありがとうございます! – Papie

+0

df.ilocはどのように動作しますか?あなたはiloc [0]を選んだので、これは列名を参照しましたか? – Papie

+0

@Papie、どのようにデータを読みますか?私はそれが読書中に修正/修正されるべきだと思う。 – MaxU

1

使用ilocpandas0.18.0の新機能):

df.columns = df.iloc[0,:] 
print (df.iloc[1:,:].reset_index().rename_axis(None, axis=1)) 
    0 ingr contr count 
0 2.0 water 0.02 275 
1 3.0 oil 0.23 11 

のdontは、古いインデックスは、パラメータdrop=True追加が必要な場合:あなたは、インデックスの使用set_indexとして最初の列が必要な場合は

df.columns = df.iloc[0,:] 
print (df.iloc[1:,:].reset_index(drop=True).rename_axis(None, axis=1)) 
    ingr contr count 
0 water 0.02 275 
1 oil 0.23 11 

を:

df.columns = df.iloc[0,:] 
print (df.iloc[1:,:].set_index('ingr').rename_axis(None, axis=1).rename_axis(None)) 
     contr count 
water 0.02 275 
oil 0.23 11 
関連する問題