【问题标题】:How to select values from a CSV file depending on the value of a specific column如何根据特定列的值从 CSV 文件中选择值
【发布时间】:2020-09-17 14:16:27
【问题描述】:

以这个csv为例:

Col1, Col2
1,3,
0,5,
1,4
0,7

假设我有一个列表,并且我想将Col2 的值附加到列表中,前提是同一行中Col1 的值是1。结果列表应为[3,4]

如何在不使用 iterrows() 的情况下对 pandas 进行此操作?

【问题讨论】:

    标签: python excel pandas loops csv


    【解决方案1】:
    1. 我认为.loc是最pythonic和最简单的方法。

      df.loc[df['Col1'] == '1']['Col2'].to_list()
      
    2. 使用np.where的替代方法:

      import numpy as np
      df['Col3'] = np.where(df['Col1'] == 1, df['Col2'], '')
      listt = list(filter(None,df['Col3'].to_list()))
      
    3. zipiterrows 的循环替代方案。

      listt = []
      for x, y in zip(df['Col1'], df['Col2']):
          if x == 1:
              listt.append(y)
      

    【讨论】:

      【解决方案2】:

      假设您已将 csv 读入名为 df 的数据框,您可以使用以下代码:

      wanted = df.query('Col1 == 1')['Col2'].values
      mylist.extend(wanted)
      

      【讨论】:

        【解决方案3】:
        import pandas as pd
        
        lst_result=[]
        for ind, row in df.iterrows():
            if df.at[ind,'Col1'] == 1:
                lst_result.append(df.at(ind,['Col2']))
        print(lst_result)
        

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
        • 虽然此代码可以解决 OP 的问题,但最好包含关于您的代码如何解决 OP 问题的说明。这样,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。此外,高质量、完整的答案更有可能获得支持。这些功能,以及所有帖子都是独立的要求,是 SO 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-22
        • 1970-01-01
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 2016-09-16
        • 2018-09-04
        相关资源
        最近更新 更多