2017-05-08 118 views
1

我通常使用Stata,但現在想使用Python並拼命嘗試創建pandel數據集。我嘗試了pandas.panel,但沒有得到它的工作。 我有以下數據集:Python面板數據

date id1 id2 
    2000 100 50 
    2001 101 48 

現在我想使它看起來像這樣:

date id variable 
    2000 1 100 
    2000 2 101 
    2001 1 50 
    2001 2 48 

接下來,我要確定一個時間和id變量運行一些面板功能。我也試過dataframe.stack(),但是這不會根據id進行排序。我該如何做,或者我在這裏錯過了熊貓的一些很好的時間序列功能?

對不起。我確信這個問題已經在某個地方得到解答,但我現在嘗試了幾個小時,但無法弄清楚。

+0

我已想出這個問題是我沒有該列的ID,因爲id1和i2列用不同的字符串命名。 但是,如何在不扭曲數據集的情況下爲每列分配一個ID? –

+0

我相信變量列中的某些值不正確。 – pylang

回答

1

給定的輸入數據:

data = [ 
    {"date": 2000, "id1": 100, "id2": 50}, 
    {"date": 2001, "id1": 101, "id2": 48} 
] 

data = { 
    "date": [2000, 2001], 
    "id1": [100, 101], 
    "id2": [50, 48], 
} 

使得

df = pd.DataFrame(data) 
df 

enter image description here

melt」 熊貓數據幀:

melted = pd.melt(df, id_vars="date", var_name="id", value_name="variable") 

# Optional amendments 
melted["id"] = melted["id"].str.replace("id", "") 
melted.sort_values(by="date", inplace=True) 
melted.reset_index(inplace=True, drop=True) 

melted 

melted輸出

enter image description here

序號:韋翰,H. Tidy Data,雜誌統計軟件,10,59,2014年

+0

'melt'有一個'var_name'和'value_name'參數來一步完成重命名。 – DSM

+0

@DSM。謝謝。固定。 – pylang