我想提取特定日期范围内的一些数据,所以我使用的是熊猫。
这是一个示例数据框:
1/18/2021 3000000 ...
1/18/2021 5000000 ...
1/18/2021 900 ...
1/18/2021 2000000 ...
1/18/2021 2000000 ...
12/13/2020 2910000 ...
代码如下:
def date(start_time,end_time):
col_names = ['time', 'amount', 'category', 'subcategory', 'resunit', 'relateunit','divtype','des']
df = pd.read_csv('DATAss_notdivided.csv', skiprows=1, names=col_names)
df = df.set_index(['time'])
df = df.sort_index()
df=df.loc[start_time:end_time]
print(df)
date('2018-10-10','2200-10-10')
但我得到这个输出:
Empty DataFrame
Columns: [amount, category, subcategory, resunit, relateunit, divtype, des]
Index: []
我在这里做错了什么? 注意:我使用了不同的日期格式作为输入,但它们都不起作用
答案 0 :(得分:1)
您需要 DatetimeIndex,因此:
df = pd.read_csv('DATAss_notdivided.csv', skiprows=1, names=col_names)
df = df.set_index(['time'])
使用:
df = pd.read_csv('DATAss_notdivided.csv',
skiprows=1,
names=col_names,
index_col=['time'],
parse_dates=['time'])
如果可能,另一个想法是某些日期时间无效:
df = pd.read_csv('DATAss_notdivided.csv', skiprows=1, names=col_names)
df['time'] = pd.to_datetime(df['time'], errors='coerce')
df = df.set_index(['time'])
年份 2200
是有效的,如果需要一些大的时间戳,因为 timestamp limitations
是:
In [93]: pd.Timestamp.max
Out[93]: Timestamp('2262-04-11 23:47:16.854775807')
一起:
def date(start_time,end_time):
col_names = ['time', 'amount', 'category', 'subcategory', 'resunit',
'relateunit','divtype','des']
df = pd.read_csv('DATAss_notdivided.csv',
skiprows=1,
names=col_names,
index_col=['time'],
parse_dates=['time'])
df = df.sort_index()
df=df.loc[start_time:end_time]
print(df)
date('2018-10-10','2200-10-10')
答案 1 :(得分:1)
这可能是因为您没有使用 datetimeindex
。
此外,您已将结束日期指定为 2200
而不是 2020