Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按日期切片数据帧在Python中没有返回任何内容_Python_Pandas_Numpy_Datetime - Fatal编程技术网

按日期切片数据帧在Python中没有返回任何内容

按日期切片数据帧在Python中没有返回任何内容,python,pandas,numpy,datetime,Python,Pandas,Numpy,Datetime,我有数据帧df: id timestamp data group_id date 56729 56970 2020-02-01 01:22:52.717 21.0 1 2020-02-01 57135 57376 2020-02-01 14:11:22.633 38.0 3 2020-02-01 57136 57377 2020-02-01 14:11:22.733 39.0 3 20

我有数据帧
df

         id         timestamp           data group_id   date
56729   56970   2020-02-01 01:22:52.717 21.0    1   2020-02-01
57135   57376   2020-02-01 14:11:22.633 38.0    3   2020-02-01
57136   57377   2020-02-01 14:11:22.733 39.0    3   2020-02-01
57137   57378   2020-02-01 14:11:23.637 39.0    3   2020-02-01
57138   57379   2020-02-01 14:11:23.737 40.0    3   2020-02-01
和代码:

df = df[df['data'] >0]
df['timestamp'] = pd.to_datetime(df['timestamp'])

start_date = pd.to_datetime('2020-02-01 00:00:00')
end_date = pd.to_datetime('2020-03-01 00:00:00')

df = df.loc[(df['timestamp'] > start_date) & (df['timestamp'] < end_date)]

df['date'] = df['timestamp'].dt.date
df = df.sort_values(by=['date'])
df = df[df['date'] == '2020-02-01']

这只是列名。有什么问题吗?

您的
df[date]
列包含类似
datetime
的值,而不是
字符串,因此这些值将不等于
'2020-02-01'
,您可以执行以下操作:

>>> df[df['date'] == pd.to_datetime('2020-02-01')]
或者


您的
df[date]
列包含类似
datetime
的值,而不是
string
,因此这些值将不等于
'2020-02-01'
,您可以:

>>> df[df['date'] == pd.to_datetime('2020-02-01')]
或者


您的
df['date']
date对象类型数据,同时将其与第
df=df[df['date']=='2020-02-01']
行上的字符串进行比较。请查看以下解决方案:

import pandas as pd

dic = {'timestamp': ['2020-02-01 01:22:52.717', '2020-02-01 01:24:52.717', '2020-02-02 01:22:52.717',
                     '2020-02-03 01:22:52.717']}

df = pd.DataFrame(dic)

df['timestamp'] = pd.to_datetime(df['timestamp'])
print(df['timestamp'])


start_date = pd.to_datetime('2020-02-01 00:00:00')
end_date = pd.to_datetime('2020-03-01 00:00:00')

df = df.loc[(df['timestamp'] > start_date) & (df['timestamp'] < end_date)]

df['date'] = df['timestamp'].dt.date
print(df['date'])
df = df.sort_values(by=['date'])
df = df[df['date'] == pd.to_datetime('2020-02-01')]

print(df)

您的
df['date']
date对象类型数据,同时将其与第
df=df[df['date']=='2020-02-01']
行上的字符串进行比较。请查看以下解决方案:

import pandas as pd

dic = {'timestamp': ['2020-02-01 01:22:52.717', '2020-02-01 01:24:52.717', '2020-02-02 01:22:52.717',
                     '2020-02-03 01:22:52.717']}

df = pd.DataFrame(dic)

df['timestamp'] = pd.to_datetime(df['timestamp'])
print(df['timestamp'])


start_date = pd.to_datetime('2020-02-01 00:00:00')
end_date = pd.to_datetime('2020-03-01 00:00:00')

df = df.loc[(df['timestamp'] > start_date) & (df['timestamp'] < end_date)]

df['date'] = df['timestamp'].dt.date
print(df['date'])
df = df.sort_values(by=['date'])
df = df[df['date'] == pd.to_datetime('2020-02-01')]

print(df)

将字符串与datetime对象进行比较无效。将字符串与datetime对象进行比较无效。
0   2020-02-01 01:22:52.717
1   2020-02-01 01:24:52.717
2   2020-02-02 01:22:52.717
3   2020-02-03 01:22:52.717
Name: timestamp, dtype: datetime64[ns]
0    2020-02-01
1    2020-02-01
2    2020-02-02
3    2020-02-03
Name: date, dtype: object
                timestamp        date
0 2020-02-01 01:22:52.717  2020-02-01
1 2020-02-01 01:24:52.717  2020-02-01