如何根据特定列的值从 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()))
zip
是iterrows
的循环替代方案。
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文件中的特定列并打印整行