首页 > 解决方案 > 读取 csv 文件并检查特定列是否为负数。如果为真,则将相应的行写入另一个 csv

问题描述

所以我正在读取一个 csv 文件,并且有一个特定的列我正在检查它的值是否为负。如果是否定的,我想写另一个 csv。

输入 csv 文件:

编号(列名):1 -2 3 -10

预期输出:

数量:-2 -10

基本上,应该只将这些行写入数字列值为负数的另一个 csv

我尝试过使用 pandas 和 csv 阅读器:

熊猫:

df1=pd.read_csv(inputCSVFile) 
df2=df1[df1[Attribute]<(0) == True] 
df2.to_csv(outputCSVFile,index=False)

csv.reader:

with open(inputCSVFile,"r") as inputCSV:
    input=csv.reader(inputCSV)
    inputList=list(input)
    with open(outputCSVFile,"w") as outputCSV:
        output=csv.writer(outputCSV)

        indexNumber=inputList[0].index(Attribute)
        print(indexNumber)

        for row in input:
            if row[Attribute]<0:
                output.writerow(row)

到底出了什么问题?对于 csv.reader,输出文件是完全空白的。

标签: pythoncsv

解决方案


You do not need to write '==True' after checking <0

Following a step by step approach with pandas:

  1. Import pandas as pd

  2. Read CSV using pd.read_csv

  3. Make sure Attribute is number type

  4. Create a new dataframe which contains values that are negative.

    import pandas as pd
    df1=pd.read_csv(inputCSVFile)
    df1[Attribute]=df1[Attribute].astype(float) 
    df2=df1[df1[Attribute]<0] 
    df2.to_csv(outputCSVFile,index=False)
    

推荐阅读