我有以下代码:
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/