【问题标题】:How to create multiple Pandas time series from a data frame using python?如何使用 python 从数据框中创建多个 Pandas 时间序列?
【发布时间】:2016-01-16 00:35:47
【问题描述】:

我从一个看起来像这样的 Pandas 数据框开始:

   Type Date Number
1   A    x     y
2   B    x     y
3   A    x     y
4   B    x     y
5   A    x     y

我想分别为 A 类数据和 B 类数据创建单独的时间序列。最有效的方法是什么?

我正在考虑从中创建两个不同的数据帧,其中每个数据仅包含一种类型的数据,然后将每个单独的数据帧转换为一个系列。但是我也不知道该怎么做。

扩展问题:如果您甚至不知道有多少种不同的类型,有没有办法做到这一点?

到目前为止,我尝试使用df["type"] == A 检查该类型是否属于我想要的类型,但这并没有给我一个完整的数据框,只是一个数据框告诉我该类型是真还是假。

附加信息:

我的目标是使用A 类型和B 类型的日期和数字数据分别创建单独的熊猫时间序列。

我尝试了以下方法:

df.groupBy("Type").apply(lambda x: x.Date)

上述函数有效,但只返回一列。

df.groupBy("Type").apply(lambda x: (x.Date, x.Number))

上面的函数不起作用,返回的东西根本不是我想要的。

预期输出:

Type    Date Number
 A   1   x     y
     3   x     y
     5   x     y
 B   2   x     y
     4   x     y

【问题讨论】:

  • 请添加预期的输出。

标签: python pandas time-series dataframe


【解决方案1】:

如果您想按类型对日期进行分组并将它们放入单独的系列中,您可以执行以下操作。

按类型分组: grouped = df.groupby('Type')

从每个组中获取日期: dates = grouped.apply(lambda x:x.Date)

dates 现在看起来像这样:

Type   
A     1    x
      3    x
      5    x
B     2    x
      4    x

您可以通过类型名称访问系列:dates.A, dates.B

到目前为止,我尝试使用 df["type"] == A 检查类型是否属于我想要的类型,但这并没有给我一个完整的数据框,只是一个数据框说如果type 是 true 还是 false。

df["type"] == A 为您提供一个布尔掩码,您可以将其插入数据框:df[df["type"] == A] 不过这是一个很基础的pandas操作,看看官方教程,例子很多:http://pandas.pydata.org/pandas-docs/stable/tutorials.html

【讨论】:

  • 这很有帮助!如何获得包含 3 列的日期,包括 x 列和 y 列?我想为 x 中的日期和 y 中的数字创建一个时间序列。
  • 我试过这个:grouped.apply(lambda x: [x.Date, x.Number]) 但没用。
  • 你能举个例子,输出应该是什么样子的吗?
  • 我在上面发布了一些附加信息!基本上,我的最终目标是分别为每个组创建 2 个带有日期和数字信息的时间序列。我实际上并不完全确定时间序列是什么样的。
  • 我添加了我希望输出的样子。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2018-12-31
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
相关资源
最近更新 更多