2016-08-11 6 views
1

pandasデータフレームを使用して、現在の列見出しの上に行を追加します。最初の行は、今日の日付を含む単一マージされたセルである必要があります。パンダデータフレーム:現在の列見出しの上にマルチインデックス行を取得し、セルを単一のセルにマージする

私の現在のデータフレームが

index name field1 field2 
    1  John blah  blah 
    2  Dave blah  blah 
    ......... 

以下のようになります。しかし、私はデータフレームは、このように見えるように作るしようとしている:

T O D A Y \' s D A T E 
index name field1 field2 
    1  John blah  blah 
    2  Dave blah  blah 
    ......... 

私はあなたが..butができないを使用することができます聞きますこれを把握しているようだ。誰も助けることができますか?

答えて

0

df.columns = pd.MultiIndex.from_tuples([("Today's date", field) for field in df.colums]) 

の線に沿って何かが動作するはず。

これが何をするのか注意してください。パンダのセルをマージすることはできません。この場合、反復された値は表示されません。

あなたの目標は、これらの人のいくつかを連結することであるならば、私は辞書を使用することをお勧めします:

pd.concat({"Yesteday's date": yesterday_df, "Today's date": today_df}, axis=1) 
0

別の解決策は、column nameに設定され、その後、MultiIndexは必要ありません。

import pandas as pd 

df = pd.DataFrame({'name':['John','Dave'], 
        'field1':['blah','blah'], 
        'field2':['blah','blah']}, 
        index=[1,2], 
        columns=['name','field1','field2']) 

print (df) 
    name field1 field2 
1 John blah blah 
2 Dave blah blah 

#get today date 
today = pd.to_datetime('now').date() 

#pandas version 018.0 and more 
df = df.rename_axis(today,axis=1) 
#pandas verion below 0.18.0 
#df.columns.name = today 
print (df) 
2016-08-11 name field1 field2 
1   John blah blah 
2   Dave blah blah 

#if need remove column name 
df = df.rename_axis(None,axis=1) 
print (df) 
    name field1 field2 
1 John blah blah 
2 Dave blah blah 
関連する問題