我正在学习如何使用pandas dataframe并尝试预处理一些数据。我有一组显示天气的数据,数据时间字段是一个字符串。每天在此数据集中显示两次,分别为00:00和12:00。我正在尝试过滤它,并只保留12:00小时的数据。我尝试了一些建议的选项here:
#pre-processing to get only required information
data = data[["date_time", "WindGustKmph", "humidity", "precipMM", "pressure", "tempC", "winddirDegree", "windspeedKmph"]]
print(data.head())
print(str(len(data)))
#set proper datatime index and keep only day time weather
dataIndex = pd.DatetimeIndex(data['date_time'].astype(str))
data.index = dataIndex
#filter the data
data.between_time('07:00:00', '21:00:00')
print(data.head())
print(str(len(data)))
结果,我看到添加了索引,但没有应用过滤器,我的问题是为什么
date_time WindGustKmph ... winddirDegree windspeedKmph
0 2018-01-01 0:00 8 ... 21 4
1 2018-01-01 12:00 12 ... 79 10
2 2018-01-02 0:00 14 ... 19 7
3 2018-01-02 12:00 18 ... 57 16
4 2018-01-03 0:00 19 ... 16 9
[5 rows x 8 columns]
2192
date_time ... windspeedKmph
date_time ...
2018-01-01 00:00:00 2018-01-01 0:00 ... 4
2018-01-01 12:00:00 2018-01-01 12:00 ... 10
2018-01-02 00:00:00 2018-01-02 0:00 ... 7
2018-01-02 12:00:00 2018-01-02 12:00 ... 16
2018-01-03 00:00:00 2018-01-03 0:00 ... 9
[5 rows x 8 columns]
2192
此外,我尝试了另一种选择:
data['date_time'] = pd.to_datetime(data['date_time'])
data['hours'] = data['date_time'].dt.hour
data[data['hours'] != 0]
同样的结果。已添加列,但未筛选数据
date_time WindGustKmph ... windspeedKmph hours
0 2018-01-01 00:00:00 8 ... 4 0
1 2018-01-01 12:00:00 12 ... 10 12
2 2018-01-02 00:00:00 14 ... 7 0
3 2018-01-02 12:00:00 18 ... 16 12
4 2018-01-03 00:00:00 19 ... 9 0
[5 rows x 9 columns]
2192
如果您能给我一些建议,我将不胜感激
我不喜欢7:00:00和21:00:00的比较。 你为什么不直接做呢
您需要将筛选后的数据集分配回
data
:或者(你的第二选择)
相关问题 更多 >
编程相关推荐