为什么进行筛选的时候,显示的结果是空值哪里出错了
import pandas as pd
import matplotlib.pyplot as plt
data =pd.read_excel(r'F:/text/京基一百.xlsx',header=0)
print(data)
df1 = data.loc[data['时间']=='10:30:00',['入口车辆']]
df2 = data.loc[data['时间']=='12:00:00',['入口车辆']]
df3 = data[data['时间']=='10:30:00']
print(df1)
print(df2)
print(df3)
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel(r'F:/text/京基一百.xlsx', header=0)
print(data)
data['时间'] = data['时间'].astype(str)
df1 = data.loc[data['时间'] == '10:30:00']
df2 = data.loc[data['时间'] == '12:00:00']
df3 = data[data['时间'] == '10:30:00']
print(df1)
print(df2)
print(df3)
错误是因为从EXCEl读取的数据,自动将时间设置为datetime类型,所以你的过滤条件就不起作用了。
主要的就是对excel表的操作,真实运用中对多表数据筛选写上一些算法配合就能完成。
针对优化后的问题:
如果在使用Python处理Excel数据时,进行筛选的时候,发现筛选后结果为空值,那么需要检查以下几点:
1.确认数据源的路径是否正确,并使用xlrd工具读取Excel数据,如下代码中workbook=xlrd.open_workbook(r'.\file\price.xlsx')
。
2.检查筛选条件是否正确,需要包括列索引和筛选的值,如下代码所示:
data = pandas.read_excel('file.xlsx')
rowData = data[(data['columnName'] == 'value')].reset_index(drop=True)
其中columnName是需要进行筛选的列名,value是筛选的条件值。
3.对于时间筛选需要注意,时间值需要转化成时间戳,否则会出现筛选结果为空的情况。假如需要筛选2019年1月1日到2019年1月31日之间的数据,可以使用以下代码:
from datetime import datetime
startTime = datetime(2019, 1, 1).timestamp()
endTime = datetime(2019, 1, 31).timestamp()
rowData = data[(data['timeStamp'] > startTime) & (data['timeStamp'] < endTime)].reset_index(drop=True)
其中列名timeStamp
是需要进行时间筛选的列名,需要使用datetime
将时间值转化成时间戳后,再进行筛选。