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

如何在python中选择列的元素并对其排序?,python,excel,pandas,Python,Excel,Pandas,我需要社区的帮助来解决一个问题。基本上,我有一个excel数据库,其中包含一系列信息:列车号、出发日期、票价、列车所有者(NTV或TRN)和市场(列车将覆盖哪个车站) 现在,我已经创建了一个代码来过滤其中的一些信息,但我遗漏了一个部分:给定一个特定的市场、类别和出发日期范围,我如何才能为每列带有CXR=“NTV”的列车找到一列带有CXR=“TRN”且出发日期在距NTV列车正负40分钟之内的列车(我需要显示这些信息以及车费) 我还需要并排显示结果(最好也在excel上导出),以便进行快速轻松的比较

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

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

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

excel文件照片


另外,很抱歉照片质量不高,我不知道如何更新excel文件

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

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

也许,通过一些示例数据,您可以得到更准确的答案。

运行pd.read\u excel(excelfile).head(5).to\u dict()并粘贴打印输出。还可以共享您的预期输出。您可以将此作为指导编辑:类似sammywemmy的内容如何添加excel文件?这将使事情变得非常清楚
df=pd.read\u excel(“file.xlsx”)
,我的意思是,在堆栈溢出上,您可以轻松地进行检查,正如sammywemmy在上面写的那样,
pd.read\u excel(excelfile).head(5).to\u dict()
是一种方法。可以很容易地将输出读入数据帧。只需添加必要的行就可以重新创建问题。也许值得创建一个包含两个条目的示例数据集,您可以在其中测试代码。这样还可以手动检查结果是否正确。好的,我打印了结果但我仍然需要弄清楚如何以“可读”的方式发布给其他用户。很抱歉,但我对堆栈溢出和python本身还是有点陌生!
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)]