Python Pandas read_csv():如果与架构不匹配,则删除行

Python Pandas read_csv():如果与架构不匹配,则删除行,python,pandas,csv,dataframe,data-cleaning,Python,Pandas,Csv,Dataframe,Data Cleaning,我有一个csv文件,需要作为数据帧读取和解析。 理论上,所有列都应该遵循数字数据和字符串的已知模式。 我知道有些记录被破坏了,要么字段数量减少,要么顺序错误 我想做的是消除所有这些有问题的行 作为参考,在PySpark上,我曾经使用'DROPMALFORMED'过滤掉与模式不匹配的记录 dataSchema=StructType[ StructFieldcol1,LongType,True, StructFieldcol2,StringType,True] dataFrame=sqlContex

我有一个csv文件,需要作为数据帧读取和解析。 理论上,所有列都应该遵循数字数据和字符串的已知模式。 我知道有些记录被破坏了,要么字段数量减少,要么顺序错误

我想做的是消除所有这些有问题的行

作为参考,在PySpark上,我曾经使用'DROPMALFORMED'过滤掉与模式不匹配的记录

dataSchema=StructType[ StructFieldcol1,LongType,True, StructFieldcol2,StringType,True] dataFrame=sqlContext.read\ .format'com.databricks.spark.csv'\ .options标头='false',分隔符='\t',模式='DROPMALFORMED'\ .loadfilename,schema=dataSchema 对于熊猫,我找不到一个简单的方法。 例如,我认为这个代码段会起作用,但它只是复制回错误的值,而不是删除它

dataFrame['col1']=dataFrame['col1'].astypenp.int64,errors='ignore' 可能是熊猫。数字会有帮助。它有errors='compresse'选项,该选项将所有错误值替换为NaN。然后,您可以使用dropna函数删除包含NaN的行:

import pandas as pd
df=pd.DataFrame([[1,2,3],[4,5,6],[7,'F',8]],columns=['col1','col2','col3'])
df['col2']=pd.to_numeric(df['col2'],errors='coerce')
df.dropna(inplace=True)