我需要社区的帮助来解决一个问题。基本上,我有一个excel数据库,其中包含一系列信息:列车号、出发日期、票价、列车所有者(NTV或TRN)和市场(列车将覆盖哪个车站)
现在,我已经创建了一个代码来过滤其中的一些信息,但我遗漏了一个部分:给定一个特定的市场、类别和出发日期范围,我如何才能为每列有CXR=“NTV”的列车找到一列有CXR=“TRN”和的列车,该列车的出发日期在距离NTV列车正负40分钟的范围内(我需要显示这些信息以及车费)
我还需要并排显示结果(最好也在excel上导出),以便进行快速轻松的比较
import pandas as pd
import datetime
data = pd.read_excel (r'C:\Users\robda\Downloads\out_ow_train.xlsx')
pd.DataFrame([['2020-03-05 00:00:00', 8502, 'B',71,'FCOFLR','TRN']],
columns = ['DDTIME2','DTRAIN','CLASS','FARE','MARKET','CXR'])
OUTPUT
DDTIME2 DTRAIN CLASS FARE MARKET CXR
2020-03-05 00:00:00 8502 B 71 FCOFLR TRN
NS = ['TRNMXP','TRNPMF','TRNBLQ','TRNFLR','TRNFCO','TRNNAP','TRNQSR','MXPPMF','MXPBLQ','MXPFLR','MXPFCO','MXPNAP','MXPQSR',
'PMFBLQ','PMFFLR','PMFFCO','PMFNAP','PMFQSR','BLQFLR','BLQFCO','BLQNAP','BLQQSR','FLRFCO',
'FLRNAP','FLRQSR','FCONAP','FCOQSR','NAPQSR']
dates = ["2020-03-05","2020-03-10"]
classes = ['E']
time = pd.date_range( start = min(dates), end = max(dates), freq='Min')
df.MARKET.isin(NS)
df.DDATE.isin(dates)
df.CLASS.isin(classes)
df.DTIME2.isin(time)
df[df.MARKET.isin(NS) & df.DDATE.isin(dates) & df.CLASS.isin(classes) & df.DTIME2.isin(time)]
另外,很抱歉照片质量不高,我不知道如何更新excel文件
由于不知道您的数据是什么样子,我建议采用以下方法:
df1 = data.loc[data['CXR']=='NTV']
和df2 = data.loc[data['CXR']=='TRN']
merge_data.groupby(...).first()
也许,通过一些示例数据,您将能够得到更准确的答案
相关问题 更多 >
编程相关推荐