2017-05-08 117 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