python - 有效获取 np.datetime64 元素列表中不同日期的数量

标签 python pandas dataframe datetime

我有以下代码:

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

x = np.arange(0,2*np.pi,0.00001*np.pi)
base = datetime(2000, 1, 1)
arr = np.array([base + timedelta(minutes=i) for i in range(len(x))])
y = np.sin(x)
df = pd.DataFrame({'dates': [np.datetime64(x) for x in arr], 'vals': y})

它使用 1 分钟数据创建以下数据框:

                dates      vals
0 2000-01-01 00:00:00  0.000000
1 2000-01-01 00:01:00  0.000031
2 2000-01-01 00:02:00  0.000063
3 2000-01-01 00:03:00  0.000094
4 2000-01-01 00:04:00  0.000126

我想高效地检索 yyyy-mm-dd 格式的不同日期的数量。

我当前的解决方案如下,但似乎很慢:

distinct_days = set([str(i.date()) for i in pd.to_datetime(df['dates'])])

{'2000-03-29', '2000-02-14', '2000-01-30', '2000-03-04',...

然后我只需执行 len(distinct_days) 即可获得所需的结果(即 139)。

有没有办法更快地做到这一点?

最佳答案

您可以使用 pandas 本身尝试一些更简单的操作:

>>> df["only_date"] = df["date"].dt.date
>>> df["only_date"].nunique()
# 139

关于python - 有效获取 np.datetime64 元素列表中不同日期的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58361104/

相关文章:

java - 异常处理指南——Python 与 Java

python - 获取今天日期位于表中两个日期之间的对象

python - Django不会在try except语句中重定向到404

python-3.x - 根据条件在 Pandas 数据框中创建一列

python - 不要将 nan 值写入 Excel 工作表

python - 尽管值存在,但无法在数据框中搜索值

python - 使用 Python hidapi 打开具有多种用途的设备

python - 确保四舍五入的百分比总和为每组 100(最大余数法)

r - 创建一个包含一行和多列的数据框

apache-spark - Spark SQL : How to call UDF from DataFrame operation using JAVA