如何将日期时间间隔转换为数据框?

时间:2020-06-01 14:09:57

标签: python pandas dataframe datetime intervals

我想制作一个日期间隔为一周的数据框。我使用以下代码生成日期列表,但是当我要将其放入数据框时,出现此错误:

ValueError:DataFrame构造函数未正确调用!

你能给我个欢乐吗?

static Future<List<Ticket>> ticketDataStream(userID) async {
    final databaseReference = Firestore.instance;

    List<Ticket> tickets = List<Ticket>();

    await for (var snapshot in databaseReference
        .collection('bets')
        .where('userID', isEqualTo: userID)
        .snapshots()) {
      for (var document in snapshot.documents) {
        Ticket ticket = Ticket();

        ticket.status = document.data['status'];
        ticket.numOfMatches = document.data['numOfMatches'];
        ticket.returnAmount = document.data['return'];
        ticket.totalOdds = document.data['odds'];
        ticket.dateTime = document.data['dateTime'].toDate();
        ticket.betAmount = document.data['betAmount'];
        ticket.ticketID = document.documentID;

        tickets.add(ticket);
      }

      return tickets;
    }
    return null; //TODO: be sure that is not a problem
  }
}

2 个答案:

答案 0 :(得分:0)

这里不需要循环

OP_dates = pd.DataFrame(perdelta(date(1997, 7, 19), date(2020, 5, 25), timedelta(days=7)))

使用循环:

OP_dates = pd.DataFrame()
for dates in perdelta(date(1997, 7, 19), date(2020, 5, 25), timedelta(days=7)):
    OP_dates = pd.DataFrame.append(OP_dates, [dates])

答案 1 :(得分:0)

您熟悉pandas.date_range吗?我相信这正是您想要的:

import pandas as pd

date_range = pd.date_range('7-19-1997','5-25-2020',freq='1W')

#if you want the dates as entries
df = pd.DataFrame(date_range)

#or if you want the dates as the index:
df = pd.DataFrame(index=date_range)

好像有人刚刚使用您的perdelta函数发布了一个修复程序,该函数也可以工作-问题是您的for循环试图为perdelta生成的每个日期制作一个DataFrame,而不是为perdelta产生的日期的集合/数组制作单个DataFrame。

JSYK,您也可以将datetimespandas.date_range一起使用,而不是我使用的时间字符串。