Python面板数据

Python面板数据,python,panel,Python,Panel,我通常使用Stata,但现在想使用Python并拼命尝试创建pandel数据集。我试过pandas.panel,但没有成功。 我有以下数据集: date id1 id2 2000 100 50 2001 101 48 现在我想让它看起来像这样: date id variable 2000 1 100 2000 2 101 2001 1 50 2001 2 48 接下来,我想识别

我通常使用Stata,但现在想使用Python并拼命尝试创建pandel数据集。我试过pandas.panel,但没有成功。 我有以下数据集:

  date  id1   id2
  2000  100   50
  2001  101   48
现在我想让它看起来像这样:

    date  id   variable
    2000   1    100
    2000   2    101
    2001   1    50
    2001   2    48
接下来,我想识别一个time和id变量来运行一些panel函数。我还尝试了dataframe.stack(),但这并不是根据id排序的。我该怎么做,还是缺少了一些很好的时间序列函数

很抱歉问你这个问题。我确信这个问题已经在某个地方得到了解答,但我已经尝试了几个小时,仍然无法找到答案。

给定输入数据:

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

以致

df = pd.DataFrame(data)
df

“”数据帧:

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
熔化
输出


附加参考:Wickham,H.,统计软件杂志,2014年10月59日。

我发现问题在于我没有列的ID,因为id1和i2列用不同的字符串命名。但是如何在不扭曲数据集的情况下为每一列分配id?我相信变量列中的某些值是不正确的。
melt
有一个
var\u name
value\u name
参数,可以一步完成重命名。@DSM。谢谢固定的。
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