python读取csv文件,并根据某一列值输出另外一列值

本文介绍了一种使用Python的csv模块处理CSV文件的方法,通过DictReader读取文件,并根据特定列的值对另一列进行分类统计。适用于数据分析、数据预处理等场景。
部署运行你感兴趣的模型镜像

 csv.DictReader()读取和加载文件,然后根据一列的值处理另外一列的值。

代码很简单,看看就知道啥意思了。

# -*- coding:utf-8 -*-
#author:zgd
import pandas
import csv

with open("url_features_3_zgd.csv", 'r') as f:
    train_csv = csv.DictReader(f)
    firm_type = []
    not_firm_type = []
    for row in train_csv:
        if row["firmware_bool"] == "1":
            if row["getContentType"] not in firm_type:
                firm_type.append(row["getContentType"])
        elif row["firmware_bool"] == "0":
            if row["getContentType"] not in not_firm_type:
                not_firm_type.append(row["getContentType"])
        else:
            print "----------"
    print firm_type
    print not_firm_type

 

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

<think>嗯,用户想用Python的pandas库读取CSV文件中的特定列。首先,我得回忆一下pandas读取CSV的基本方法。记得pandas有read_csv函数,这个函数有很多参数,比如usecols可以用来指定要读取的列。 用户可能知道一些基础,但不确定具体参数怎么用。比如,usecols可以接受列名的列表或者索引的列表。例如,如果想读取'user_id'和'rating'这两列,可以写成usecols=['user_id', 'rating'],或者用列索引比如usecols=[0,2],假设这些列的位置是第0和第2列。 另外,用户可能遇到列名中有中文或者特殊字符的情况,这时候需要确保文件编码正确。常见的编码问题可以用encoding参数解决,比如encoding='utf-8'或者'gbk'。参考引用中的例子,比如引用[3]提到如果列无法解析为日期时间,会保持为对象类型,这时候可能需要后续处理。不过用户的问题主要是读取特定列,所以编码问题可能需要关注。 还有,引用[2]中的例子使用了names参数来指定列名,这可能是因为CSV文件没有标题行。如果原文件有标题,应该用header=0来指定,或者不写,默认第一行为标题。如果用户需要跳过某些行,可以用skiprows参数。 用户可能还想知道如何提高读取文件的效率,比如只读取需要的列可以减少内存使用,这在处理大型数据集时很重要,如引用[5]提到的pandas可能不适合非常大的数据集,但合理使用参数可以优化性能。 另外,引用[4]提到pandas在数据分析中的优势,所以用户可能在进行数据处理,需要后续分析。确保读取的列正确,才能进行下一步操作。 总结一下,步骤应该是:导入pandas,使用read_csv,设置usecols参数指定列,处理可能的编码问题,检查数据是否正确读取。示例代码可能会有帮助,比如data = pd.read_csv('file.csv', usecols=['col1', 'col3']),然后打印前几行确认。 用户可能还会问如何处理没有标题的文件,或者列名有空格的情况,这时候可能需要设置header=None,用names参数指定列名,再在usecols中使用这些名字。或者用列索引来指定。 另外,如果CSV文件用不同的分隔符,比如分号,需要指定sep参数。但用户的问题是关于读取特定列,所以可能不需要处理这个。 最后,需要提示用户如果遇到编码错误,可以尝试不同的编码方式,如引用[1]中提到的UnicodeDecodeError,可能需要指定encoding='latin1'或者其他编码格式。</think>在Python中使用Pandas读取CSV文件中的特定列,可以通过`pd.read_csv()`函数的参数`usecols`实现。以下是具体方法: ### 1. **按列名选择** 若CSV文件包含标题行,可直接指定列名列表: ```python import pandas as pd data = pd.read_csv('file.csv', usecols=['column_name1', 'column_name2']) ``` ### 2. **按列索引选择** 若文件无标题行,可通过列索引(从0开始)指定: ```python data = pd.read_csv('file.csv', usecols=[0, 2], header=None) # 读取第1、3列 ``` ### 3. **混合选择** 结合列名和索引(需文件有标题行): ```python data = pd.read_csv('file.csv', usecols=['column_name', 2]) ``` ### 4. **处理编码问题** 若遇到编码错误(如`UnicodeDecodeError`),需指定编码格式: ```python data = pd.read_csv('file.csv', usecols=['user_id'], encoding='latin1') ``` 常见编码参数:`utf-8`、`gbk`、`latin1`[^1][^3]。 ### 5. **性能优化** 仅读取必要列可减少内存占用,尤其适合大型数据集[^5]。 ### 示例代码 ```python # 读取名为'rating.csv'的文件中'user_id'和'rating'列 data = pd.read_csv('rating.csv', usecols=['user_id', 'rating']) print(data.head()) ``` ### 注意事项 - 若列名含特殊字符/空格,需严格匹配名称 - 无标题文件需设置`header=None`自定义列名[^2] ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值