【问题标题】:How to convert a list of tuples with interval type to DateTime in python如何在python中将具有间隔类型的元组列表转换为DateTime
【发布时间】:2020-10-19 06:37:09
【问题描述】:

我有一个元组列表,如下所示,Interval 类型。

[(Interval('2020-06-10 16:00:00', '2020-06-11 02:00:00', closed='neither'),
  Interval('2020-06-11 01:00:00', '2020-06-11 05:00:00', closed='neither')),
 (Interval('2020-06-11 02:00:00', '2020-06-11 06:00:00', closed='neither'),
  Interval('2020-06-11 01:00:00', '2020-06-11 05:00:00', closed='neither')),
 (Interval('2020-06-11 01:00:00', '2020-06-11 05:00:00', closed='neither'),
  Interval('2020-06-10 16:00:00', '2020-06-11 02:00:00', closed='neither'))]

我如何解压缩,删除存在的重复对并将其转换为日期时间格式作为两个单独的列以获得类似的东西?

        START_TIME             END_TIME
0   2020-06-10 16:00:00  2020-06-11 02:00:00
1   2020-06-11 02:00:00  2020-06-11 06:00:00
2   2020-06-11 01:00:00  2020-06-11 05:00:00

这更像是我想知道如何将 Interval 数据类型转换为 Datetime 和 Timestamp 格式。 提前致谢!

【问题讨论】:

  • 这无效? ValueError: Only numeric, Timestamp and Timedelta endpoints are allowed when constructing an Interval.
  • 我压缩了 START_TIME 和 END_TIME,使用 pd.Interval 对它们进行了一些计算,然后我的结果列表就变成了这样。所以应该有办法把它转回Datetime!
  • 你为什么不开始where you left off
  • 为什么你的列表是嵌套的而不是扁平的?
  • 它实际上包含一对值。像 (s1,e1) 和 (s2,e2)

标签: python python-3.x pandas list datetime


【解决方案1】:

这里有一个解决方案:

# flatten the list
lst = [e for x in lst for e in x]

# extract start and end time. 
df = pd.DataFrame([(t.left, t.right) for t in lst])

df.drop_duplicates(inplace = True)

# rename columns
df.columns = ["start_time", "end_time"]

输出是:

           start_time            end_time
0 2020-06-10 16:00:00 2020-06-11 02:00:00
1 2020-06-11 01:00:00 2020-06-11 05:00:00
2 2020-06-11 02:00:00 2020-06-11 06:00:00

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2012-10-01
    相关资源
    最近更新 更多