给定一个 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()]
最佳答案
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/