如何在Python中从用户输入(日历选择)中获取日期/时间值

2024-06-28 10:57:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我正在尝试将感知到的数据捕获到一个“总体列表””。这就是我所做的:

  # Initialize data frame
df1 = pd.read_csv(
     "/Users/ME/Desktop/Frontend/sensor_points.csv",
    dtype=object,
)
df = pd.concat([df1], axis=0)
df["Date/Time"] = pd.to_datetime(df["Date/Time"], format="%Y-%m-%d %H:%M")
df.index = df["Date/Time"]
df.drop("Date/Time", 1, inplace=True)
totalList = []
for month in df.groupby(df.index.month):
    dailyList = []
    for day in month[1].groupby(month[1].index.day):
        dailyList.append(day[1])
    totalList.append(dailyList)
totalList = np.array(totalList)

因此,我的问题是,代码认为循环的月份中的月份值将始终迭代1,2,…,12,循环的将迭代1,2,…,31。但这些都不能保证。因为我的CSV不包含所有月份和日期的数据,所以对于日历选择器上的某些日期,我会得到一个

'index-out-of-range' error for totalList

我知道这是因为实际上,totalist的形状很大程度上取决于输入数据(CSV文件)的内容。假设该文件只包含3个月(例如1月、5月和12月)的记录,那么len(totalist)==3

有人知道我如何解决这个问题吗


Tags: csv数据indffordateindextime
1条回答
网友
1楼 · 发布于 2024-06-28 10:57:10

您的问题将是从您的网站访问Totalist。(您正在尝试访问列表中不存在的索引)您应该只包含一个try/except子句或方法来处理缺少的值。请参见以下示例:

>>> x = [1,2,3]
>>> x[0]
1
>>> x[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> try:
...     x[4]
... except IndexError:
...     print("No such value exists")
...
No such value exists

希望这有帮助。另一种方法是预先确定列表/数组的大小,并填充一些伪变量,然后在访问中处理它

>>> x = ["empty"]*4
>>> x[0] = 1
>>> x[1] = 2
>>> x[2] = 3
>>> x
[1, 2, 3, "empty"]
>>> x[0]
1
>>> x[3]
'empty'

相关问题 更多 >