python - 读取 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,输出文件是完全空白的。
解决方案
You do not need to write '==True' after checking <0
Following a step by step approach with pandas:
Import pandas as pd
Read CSV using pd.read_csv
Make sure Attribute is number type
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)
推荐阅读
- python - 如何在 python 中构建一个简单的 UI 来运行已经完整的 python 代码并在 UI 窗口本身而不是控制台中显示结果?
- laravel - Laravel Liveware中textarea中的ckeditor 5 classic,表单不会提交
- gis - 如何使用 ogr2ogr 将形状文件转换为 GeoJSON?
- javascript - 当我第二次单击按钮时,我的标签想要消失
- javascript - 如何以角度填充表格中的嵌套表单数组?
- angular - Angular 应用程序无法在 iphone 和某些设备上运行并且没有错误
- python - Kivy:提交注册表单和登录页面的问题
- linux - Azure Linux 应用服务不显示应用程序日志
- r - 如何制作一个函数来制作一个复杂的欧拉图?
- python - 比较当前和前一帧照片 - Python