如何在python中选择列的元素并对其排序?

2024-06-09 03:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要社区的帮助来解决一个问题。基本上,我有一个excel数据库,其中包含一系列信息:列车号、出发日期、票价、列车所有者(NTV或TRN)和市场(列车将覆盖哪个车站)

现在,我已经创建了一个代码来过滤其中的一些信息,但我遗漏了一个部分:给定一个特定的市场、类别和出发日期范围,我如何才能为每列有CXR=“NTV”的列车找到一列有CXR=“TRN”的列车,该列车的出发日期在距离NTV列车正负40分钟的范围内(我需要显示这些信息以及车费)

我还需要并排显示结果(最好也在excel上导出),以便进行快速轻松的比较

excel文件照片 enter image description here

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文件


Tags: 信息dftimeexcelmarketclassclassespd
1条回答
网友
1楼 · 发布于 2024-06-09 03:29:41

由于不知道您的数据是什么样子,我建议采用以下方法:

  • 将数据拆分为两个数据帧-每列一个:df1 = data.loc[data['CXR']=='NTV']df2 = data.loc[data['CXR']=='TRN']
  • 然后,使用pandas.merge_asof再次合并两个数据帧,以获得具有适当容差的近似合并
  • 最后,您可以检查是否有多个匹配项,然后只选择最接近的一个,可以使用merge_data.groupby(...).first()

也许,通过一些示例数据,您将能够得到更准确的答案

相关问题 更多 >