首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python熊猫从时间序列中提取独特的日期

python熊猫从时间序列中提取独特的日期
EN

Stack Overflow用户
提问于 2013-02-03 22:14:50
回答 4查看 29.7K关注 0票数 25

我有一个包含大量日内数据的DataFrame,DataFrame有几天的数据,日期不连续。

代码语言:javascript
复制
 2012-10-08 07:12:22            0.0    0          0  2315.6    0     0.0    0
 2012-10-08 09:14:00         2306.4   20  326586240  2306.4  472  2306.8    4
 2012-10-08 09:15:00         2306.8   34  249805440  2306.8  361  2308.0   26
 2012-10-08 09:15:01         2308.0    1   53309040  2307.4   77  2308.6    9
 2012-10-08 09:15:01.500000  2308.2    1  124630140  2307.0  180  2308.4    1
 2012-10-08 09:15:02         2307.0    5   85846260  2308.2  124  2308.0    9
 2012-10-08 09:15:02.500000  2307.0    3  128073540  2307.0  185  2307.6   11
 ......
 2012-10-10 07:19:30            0.0    0          0  2276.6    0     0.0    0
 2012-10-10 09:14:00         2283.2   80   98634240  2283.2  144  2283.4    1
 2012-10-10 09:15:00         2285.2   18  126814260  2285.2  185  2285.6    3
 2012-10-10 09:15:01         2285.8    6   98719560  2286.8  144  2287.0   25
 2012-10-10 09:15:01.500000  2287.0   36  144759420  2288.8  211  2289.0    4
 2012-10-10 09:15:02         2287.4    6  109829280  2287.4  160  2288.6    5
 ......

如何从上面的DataFrame中提取datetime格式的唯一日期?得到像[2012-10-08, 2012-10-10]一样的结果

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-03 22:41:42

如果你有一个这样的Series

代码语言:javascript
复制
In [116]: df["Date"]
Out[116]: 
0           2012-10-08 07:12:22
1           2012-10-08 09:14:00
2           2012-10-08 09:15:00
3           2012-10-08 09:15:01
4    2012-10-08 09:15:01.500000
5           2012-10-08 09:15:02
6    2012-10-08 09:15:02.500000
7           2012-10-10 07:19:30
8           2012-10-10 09:14:00
9           2012-10-10 09:15:00
10          2012-10-10 09:15:01
11   2012-10-10 09:15:01.500000
12          2012-10-10 09:15:02
Name: Date

其中每个对象都是一个Timestamp

代码语言:javascript
复制
In [117]: df["Date"][0]
Out[117]: <Timestamp: 2012-10-08 07:12:22>

您只能通过调用.date()来获取日期

代码语言:javascript
复制
In [118]: df["Date"][0].date()
Out[118]: datetime.date(2012, 10, 8)

和系列有一个.unique()方法。因此您可以使用maplambda

代码语言:javascript
复制
In [126]: df["Date"].map(lambda t: t.date()).unique()
Out[126]: array([2012-10-08, 2012-10-10], dtype=object)

或者使用Timestamp.date方法:

代码语言:javascript
复制
In [127]: df["Date"].map(pd.Timestamp.date).unique()
Out[127]: array([2012-10-08, 2012-10-10], dtype=object)
票数 48
EN

Stack Overflow用户

发布于 2013-02-03 22:32:18

使用正则表达式:

代码语言:javascript
复制
(\d{4}-\d{2}-\d{2})

使用re.findall函数运行它,以获取所有匹配项:

代码语言:javascript
复制
result = re.findall(r"(\d{4}-\d{2}-\d{2})", subject)
票数 2
EN

Stack Overflow用户

发布于 2020-05-17 19:32:29

为了给@DSM一个替代的答案,看看这个来自@Psidom的other answer

它应该是这样的:

代码语言:javascript
复制
pd.to_datetime(df['DateTime']).dt.date.unique()

在我看来,它的性能稍好一些。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14673394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档