首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查一个日期是否落在熊猫的数据中

检查一个日期是否落在熊猫的数据中
EN

Stack Overflow用户
提问于 2018-02-01 00:59:02
回答 3查看 3.5K关注 0票数 2

我有一个日期的数据:

代码语言:javascript
运行
复制
>>> d.head()
Out[55]: 
0   2010-06-01
1   2010-06-02
2   2010-06-03
3   2010-06-04
4   2010-06-07
dtype: datetime64[ns]

我无法核实其中所载的某一日期:

代码语言:javascript
运行
复制
>>> d.iloc[1]
Out[59]: Timestamp('2010-06-02 00:00:00')

>>> d.iloc[1] in d
Out[60]: False

>>> np.datetime64(d.iloc[1]) in d
Out[61]: False

>>> d.iloc[1] in pd.to_datetime(d)
Out[62]: False

>>> pd.to_datetime(d.iloc[1]) in pd.to_datetime(d)
Out[63]: False

检查这个最好的方法是什么?

请回答以下一些评论:

使用值并不能解决这个问题:

代码语言:javascript
运行
复制
>>> d.iloc[1] in d.values
Out[69]: False

我不认为这是iloc返回行而不是值的问题。

代码语言:javascript
运行
复制
>>> x= pd.Timestamp('2010-6-2')
>>> x
Out[72]: Timestamp('2010-06-02 00:00:00')
>>> x in d
Out[73]: False
>>> x in pd.to_datetime(d)
Out[74]: False
>>> x in d.values
Out[75]: False
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-01 01:06:37

尝尝这个。您正在将pd.Series的第一个值与列中的值进行比较,当然,该值将是True

我认为您的比较不起作用的原因是因为 checks for existence in the ,而不是系列本身。应用set确保序列值用于比较。

代码语言:javascript
运行
复制
# df
#     date
# 0   2010-06-01
# 1   2010-06-02
# 2   2010-06-03
# 3   2010-06-04
# 4   2010-06-07

# convert date column to datetime
df.date = pd.to_datetime(df.date)

df.date[1] in set(df.date)
票数 1
EN

Stack Overflow用户

发布于 2018-02-01 01:32:56

这里有一个可能的答案,我在尝试和错误,不确定我是不是错过了什么。

检查d显示它是一个dtype datetime64ns。

代码语言:javascript
运行
复制
>>> d.head()
Out[55]: 
0   2010-06-01
1   2010-06-02
2   2010-06-03
3   2010-06-04
4   2010-06-07
dtype: datetime64[ns]

同样的情况发生在d.values上。

代码语言:javascript
运行
复制
>>> d.values
Out[76]: 
array(['2010-05-31T20:00:00.000000000-0400', '2010-06-01T20:00:00.000000000-0400',.....], dtype='datetime64[ns]')

但是,只要检查其中一个,就会将其更改为时间戳。

代码语言:javascript
运行
复制
>>> d.iloc[1]
Out[82]: Timestamp('2010-06-02 00:00:00')

所以我做了这个工作:

代码语言:javascript
运行
复制
>>> x= pd.Timestamp('2010-6-2')
>>> x
Out[72]: Timestamp('2010-06-02 00:00:00')
>>> np.datetime64(x) in d.values
Out[77]: True

检查使用set的@jp_data_analysis建议也是有效的,因为它使格式保持时间戳。

代码语言:javascript
运行
复制
>>> set(d.iloc[:])
Out[81]: 
{Timestamp('2015-10-13 00:00:00'),
 Timestamp('2011-07-18 00:00:00'),......

>>> x in set(d.iloc[:])
Out[83]: True
票数 1
EN

Stack Overflow用户

发布于 2019-03-03 13:20:37

您可以使用.isin执行以下操作(请注意,.isin确实需要一个列表作为输入):

代码语言:javascript
运行
复制
df.date = pd.to_datetime(df.date)

df.date.isin([df.date.iloc[1]])
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48553824

复制
相关文章

相似问题

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