如果我有一个看起来像这样的数据框:
timestamp lat lon sog
2018-12-22 08:03:15 54.917200 13.358867 10.8
2018-12-22 08:04:05 54.916350 13.354700 10.8
2018-12-22 08:04:53 54.915533 13.350767 10.7
2018-12-24 08:03:15 57.917200 9.358867 10.8
2018-12-24 08:04:05 57.916350 9.354700 10.8
2018-12-26 08:04:53 59.915533 5.350767 10.7
我想对df进行切片,以便仅使用第一天的信息。如果我知道日期,就可以
first_day = df.loc['2018-12-22']
但是我想对许多.csv文件自动执行此操作,并且它们都有不同的开始日期。有没有办法切片Datetime索引只获得第一天?像这样:
first_day = df.iloc[:day1] ?
最终得到:
timestamp lat lon sog
2018-12-22 08:03:15 54.917200 13.358867 10.8
2018-12-22 08:04:05 54.916350 13.354700 10.8
2018-12-22 08:04:53 54.915533 13.350767 10.7
答案 0 :(得分:0)
您可以找到第一天(最短日期)并使用布尔索引:
for df in df_list:
days = df.index.normalize()
min_date = days.min()
df[days == min_date]
答案 1 :(得分:0)
您可以使用df中“时间戳”列的date
部分中的最小值进行选择,例如
import pandas as pd
df = pd.DataFrame({'timestamp': ['2018-12-22 08:03:15',
'2018-12-22 08:04:05',
'2018-12-22 08:04:53',
'2018-12-24 08:03:15',
'2018-12-24 08:04:05',
'2018-12-26 08:04:53'],
'lat':[54.917200,
54.916350,
54.915533,
57.917200,
57.916350,
59.915533]})
df['timestamp'] = pd.to_datetime(df['timestamp'])
df.loc[df.timestamp.dt.date == df.timestamp.dt.date.min()]
# timestamp lat
# 0 2018-12-22 08:03:15 54.917200
# 1 2018-12-22 08:04:05 54.916350
# 2 2018-12-22 08:04:53 54.915533