【问题标题】:Read csv file using pandas and display cell value with sorted date/time使用 pandas 读取 csv 文件并显示带有排序日期/时间的单元格值
【发布时间】:2019-10-04 17:59:07
【问题描述】:

我正在尝试在 python 中使用 pandas 读取 csv 文件。我已经提到了这个链接 pandas.read_csv moves column names over one

并使用以下代码显示 csv 文件的第一行。

    prodid ProdParent productname    StartDate       wfStatus   ErrorMessage

    FCT   TDAR     2752_bg42328_US   3/8/2019 15:21              "PROCESs IS empty"                   
    VEE   TNL      2752_bg42329_US   3/8/2019 15:26  "success" 
    FCT   TRAD     2752_bg42328_US   3/8/2019 15:21              "PROCESs IS empty" 
    VEE   TNL      2752_bg42329_US.  3/8/2019 15:32  
    VEE   TNL      2752_bg42329_US   3/8/2019 15:34          
    VEE   TNL      2752_bg42329_US   3/8/2019 15:38    
    JUR   TLO      2755_bg567_US     4/8/2019 03:19

如何使用 pandas 遍历每一行。 在我的 csv 文件中,有一个 headercolumns 即 errorMessage 和 productName、开始日期、wfstatus 等... 我面临的问题是,我的 csv 文件中有大约 8000 行,我只需要在以下条件下过滤/获取那些行/列值:

如果errorMessage_column_value == blank/null valuewfSTATUS_columnvalue == blank/null 然后获取与上述条件匹配的相应 productName 单元格/列值。

现在,如果在同一日期存在多个具有不同时间跨度的 productname 列值(在 startdate 列中),我只需要获取最新/最近的 productName 值。

如何做到这一点。

df = pd.read_csv(csv_ctrl_file, index_col=False)
print(df.head(1))

【问题讨论】:

  • 您可以使用df.loc 将输入数据和预期输出作为文本发布到问题中,以便我们更好地帮助您。
  • 我已经更新了,试图用实际输入的 csv 文件内容和我的 reqmnt 来解释。你能给我一个如何使用 df.loc 获取特定列值的示例。我对 python 编程很陌生。因此很难读取和显示输出

标签: python python-3.x pandas


【解决方案1】:

使用isna()查找空白行,然后使用boolean indexing

df[df["errorMessage"].isna() | df[" wfSTATUS_columnvalue"].isna()]

【讨论】:

  • 但是,我如何遍历 csv 文件中的每一行。使用 DictReader 更好吗?使用 open(file, mode='r', encoding='utf-8') as f: reader = csv.DictReader(f, delimiter=',') for row in reader: 或者我可以使用 "" for row in读者:“”
  • 这将适用于每一行,您不需要循环。阅读使用 pandas 进行矢量化。
猜你喜欢
  • 2016-12-15
  • 1970-01-01
  • 2021-06-14
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 2017-02-18
相关资源
最近更新 更多