python - 如何按给定日期时间索引的日期进行搜索

标签 python datetime pandas

给定一个 DataFrame,其中索引为 Datetime,如何通过仅匹配日期部分来检索行?

例如:

df1 =

                     A    B    C    D
2011-01-13 16:00:00  344  144  616  73
2011-01-14 16:00:00  346  145  624  74
2011-01-18 16:00:00  339  146  639  77
...

并给出:

df2['Date'] = 

0    2011-01-13
1    2011-01-13
2    2011-01-26
3    2011-02-02
4    2011-02-10
5    2011-03-03
6    2011-03-03
7    2011-06-03
8    2011-05-03
9    2011-06-10
10   2011-08-01
11   2011-08-01
12   2011-12-20

我想要这样的东西:

for indx, row in df2.iterrows():
    print df1.loc[df1.index.date() == row['Date'].date()]

最佳答案

您可以使用to_series , dateisin :

print df1.index.to_series().dt.date
2011-01-13 16:00:00    2011-01-13
2011-01-14 16:00:00    2011-01-14
2011-01-18 16:00:00    2011-01-18
dtype: object

print df1.index.to_series().dt.date.isin(df2['Date'].dt.date)
Name: Date, dtype: object
2011-01-13 16:00:00     True
2011-01-14 16:00:00    False
2011-01-18 16:00:00    False
dtype: bool

print df1[df1.index.to_series().dt.date.isin(df2['Date'].dt.date)]
                       A    B    C   D
2011-01-13 16:00:00  344  144  616  73

或者也许您需要:

print df1.index.date
[datetime.date(2011, 1, 13) datetime.date(2011, 1, 14)
 datetime.date(2011, 1, 18)]

print df2['Date'].dt.date.isin(df1.index.date)
0      True
1      True
2     False
3     False
4     False
5     False
6     False
7     False
8     False
9     False
10    False
11    False
12    False
Name: Date, dtype: bool

print df2[df2['Date'].dt.date.isin(df1.index.date)]
        Date
0 2011-01-13
1 2011-01-13

关于python - 如何按给定日期时间索引的日期进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35284883/

相关文章:

python: `for i in obj.func()` 每次迭代都会重新运行 `func` 吗?

Perl DateTime 纳秒始终为 0

python - 使用 python 检查输入字符串是否包含日期(特别是 yy-mm-dd 格式)

python - 如何使用 Pandas 创建一个新列来识别时间字段中的接近度?

python - 如何从按 groupby 排列的组中创建数据框?

python - 从 XML 标签创建原始文本

Python mySQL - 转义引号

python - 如何更正此 python dfs 搜索?

c# - 将 DateTime 调整为 DST

python - 读取 .csv 文件时在 Python 中解析日期的最快方法?