试图从我的数据中过滤掉某一天,当我尝试运行我的代码时,我没有得到任何结果(这是不准确的,因为有那一天的数据)。
这是我正在使用的代码:
a['datetime'] = pd.to_datetime(a['datetime'])
start_date = pd.to_datetime('2019-09-01')
end_date = pd.to_datetime('2019-10-01')
sept = a[a['datetime'].between(start_date, end_date)]
day1 = pd.to_datetime('2019-09-11')
(sept['datetime'] == day1).sum()
Run Code Online (Sandbox Code Playgroud)
这是我的数据示例
3 2019-09-11 06:59:02.715641
13 2019-09-12 11:16:53.061871
24 2019-09-02 06:50:37.347313
27034 2019-09-15 11:57:34.582988
27163 2019-09-01 13:38:34.169917
31708 2019-09-17 07:45:50.693893
32883 2019-09-06 13:27:56.161920
33645 2019-09-17 10:02:11.010567
33657 2019-09-01 15:55:42.492608
57825 2019-09-17 11:25:19.405100
57836 2019-09-04 20:12:10.853341
57837 2019-09-04 20:12:00.959338
Run Code Online (Sandbox Code Playgroud)
您可以使用 a.loc来过滤所需的行并对相关列求和。
由于您没有向我们展示您的专栏名称,我假设它们是col_1并且col_2
因此,要访问该行,我们可以执行以下操作:
print(df.loc[df['col_2'].dt.normalize() == '2019-09-11'])
col_1 col_2
3 2019-09-11 06:59:02.715641
Run Code Online (Sandbox Code Playgroud)
然后,要访问相关列以获得总和,我们可以将 'col_1' 传递到末尾.sum()
df.loc[df['col_2'].dt.normalize() == '2019-09-11']['col_1'].sum()
out : 3
Run Code Online (Sandbox Code Playgroud)
dt.normalize()仅返回日期时间列的日期值,您的代码不起作用的原因01-01-2001是==不01-01-2001 23:59
如果我们打印以下内容:
print(df['col_2'].dt.normalize())
0 2019-09-11
1 2019-09-12
2 2019-09-02
3 2019-09-15
4 2019-09-01
5 2019-09-17
6 2019-09-06
7 2019-09-17
8 2019-09-01
9 2019-09-17
10 2019-09-04
11 2019-09-04
Name: 1, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
请注意,dt.normalize()保持数据类型不变,datetime以便您能够使用进一步的datetime操作。
| 归档时间: |
|
| 查看次数: |
878 次 |
| 最近记录: |