2013-10-23 8 views
7

DFに現在のヘッダーを置き換えずにヘッダーを追加するにはどうすればよいですか?言い換えれば、私は現在のヘッダーを下にシフトし、別のレコードとしてデータフレームに追加したいだけです。Pandas Dataframe現在のヘッダーを置き換えずにヘッダーを追加します

*二次質問:テーブル(例データフレーム)をスタックオーバーフローの質問に追加するにはどうすればよいですか?

私は、この(注ヘッダを持っており、それがちょうど行として追加する方法:私は、これは(他のすべてのレコードが下方にシフトされ、新しいレコードが追加される必要がある

0.213231 0.314544 
0 -0.952928 -0.624646 
1 -1.020950 -0.883333 

) (も:私はcouldn私は、インポートのためs3_text_adapterを使用していますので、「Tは、CSVをきちんと読んで、私はパンダに似たヘッダread_csv)を無視し、引数を持ってする方法を見つけ出すことができませんでした:

 A   B 
0 0.213231 0.314544 
1 -1.020950 -0.883333 
+1

テーブルをコピーしてテキストreprを貼り付けるだけで、CTRL + K /インデント4のスペースを強調表示(コードの書式設定)することができます。 –

+0

s3_text_adapterとはどのようなものですか?それはヘッダー=なしオプションを持っている必要があります... –

+0

http://docs.continuum.io/iopro/TextAdapter.html – horatio1701d

答えて

11

別のオプションとして、それを追加することですそれをマルチインデックスにするために、カラムインデックスの追加レベル:

In [11]: df = pd.DataFrame(randn(2, 2), columns=['A', 'B']) 

In [12]: df 
Out[12]: 
      A   B 
0 -0.952928 -0.624646 
1 -1.020950 -0.883333 

In [13]: df.columns = pd.MultiIndex.from_tuples(zip(['AA', 'BB'], df.columns)) 

In [14]: df 
Out[14]: 
     AA  BB 
      A   B 
0 -0.952928 -0.624646 
1 -1.020950 -0.883333 

あなたはまだあなたのデータフレームの迅速かつ正確な計算を行うことができ、あなたは古いものと新しいカラム名の両方でアクセスすることができますので、これは、データフレームの正しいdtypesを維持するという利点があります。

。これらがある場合(、DTYPEが変更される可能性があり

In [21]: df_bad_idea = df.T.reset_index().T 

In [22]: df_bad_idea 
Out[22]: 
       0   1 
index   A   B 
0  -0.952928 -0.624646 
1  -1.02095 -0.883333 

注:完全性については

は、ここでは通常、すでに述べたように、列の行を、作り、良いアイデアDSMの(削除答え)ないです

In [23]: df.sum() 
Out[23]: 
A -1.973878 
B -1.507979 
dtype: float64 

In [24]: df_bad_idea.sum() # doh! 
Out[24]: Series([], dtype: float64) 

列名の場合:あなたは実際に、それはおそらく遅くなりますように、この上の任意の作業を行うことを計画しても、失敗する可能性がある場合、この場合のように、列名ではなく、適切な値)は、...ので注意が必要は、a実際にはヘッダー行と誤っていた行は、(たとえば、)のデータの読み取り時にを修正する必要があります。 read_csvを使用header=None)。

+0

私はこれに賛成して私を削除するつもりです。私はdtypesを変更することについてのあなたの意見は良いものだと思っています。 – DSM

+0

@DSMあなたは私が+1した後も常にそれを行います!それはOPが後にあったものでしたが、これは私が考えているより正確です(しかし、より簡単にできるはずです...) –

+0

ありがとうございます。これは本当にクールで良いことですが、私は上記の最初のdfからヘッダ 'A'と 'B'を置き換えるだけでなく、値 'A'と 'B'を別の行として追加します。 'A'と 'B'はdfの新しい最初のレコードとしてインデックス0になります。 – horatio1701d

関連する問題