如何根据特定列的值从 CSV 文件中选择值

Posted

技术标签:

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

以这个csv为例:

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

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

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

【问题讨论】:

【参考方案1】:

    我认为.loc是最pythonic和最简单的方法。

    df.loc[df['Col1'] == '1']['Col2'].to_list()
    

    使用np.where的替代方法:

    import numpy as np
    df['Col3'] = np.where(df['Col1'] == 1, df['Col2'], '')
    listt = list(filter(None,df['Col3'].to_list()))
    

    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 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释。

以上是关于如何根据特定列的值从 CSV 文件中选择值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据另一列的值获取单行值?

如果列中的值小于特定值,如何转到csv文件中的特定列并打印整行

根据表中其他列的值从同一表中的 2 列中选择信息

如何使用 Java 将列的时间戳(6)数据类型值从​​数据库提取到 csv 或在控制台上显示?

如何根据一个表中的特定值从3个表中删除行[重复]

Pyspark:如何根据另一列中的匹配值从数组中的第一次出现中选择直到最后的值