【问题标题】:Python Panel DataPython 面板数据
【发布时间】:2017-10-06 12:28:51
【问题描述】:

我通常使用 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

接下来,我想确定一个时间和 id 变量来运行一些面板功能。我也试过dataframe.stack(),但这不是根据id排序的。我该怎么做,还是我在这里错过了 pandas 中一些不错的时间序列函数?

对不起这个问题。我确信这已经在某个地方得到了回答,但我现在尝试了几个小时,但无法弄清楚。

【问题讨论】:

  • 我发现问题在于我没有列的 ID,因为 id1 和 i2 列用不同的字符串命名。但是如何在不扭曲数据集的情况下为每一列分配一个 id?
  • 我认为您的变量列中的某些值不正确。

标签: python panel


【解决方案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

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

其他参考资料:Wickham, H. Tidy Data,统计软件杂志,2014 年 10 月 59 日。

【讨论】:

  • melt 有一个 var_namevalue_name 参数可以一步完成重命名。
  • @DSM。谢谢。固定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 2016-06-07
  • 1970-01-01
  • 2019-04-13
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多