根据列值的格式删除csv文件中的行



我有一个csv文件,其中包含三列- computer_name, software_code, software_update_date。这个文件里有我在期末报告中不需要的电脑。我只需要名称以40-、46-或98-开头的计算机的数据。下面是示例文件:

computer_name   software_code   software_update_date
07-0708                   436   2019-02-07 0:00
30-0207                 35170   2021-01-18 0:00
40-0049                    41   2017-06-21 23:00
46-0001                    11   2013-11-23 0:00

所以我想删除行07-0708和30-0207。我尝试使用pandas,但生成的文件完全相同,没有错误消息。我对python很陌生,还在掌握概念。我写了下面的代码:

import csv
import pandas as pd
fname = 'RAWfile.csv'
df=pd.read_csv(fname,encoding='ISO-8859-1')
#Renaming columns from the report
df.rename(columns = {'computer_name':'PC_NO', 'software_code':'SOFT_CODE', 'software_update_date':'UPDATE_DATE'}, inplace=True)
computers = ['40-','46-','98-']
searchstr = '|'.join(computers)
df[df['PC_NO'].str.contains(searchstr)]
df.to_csv('updatedfile.csv',index=False,quoting=csv.QUOTE_ALL,line_terminator='n')

更新:csv文件中有近70,000行。修正了计算机列表中的值以匹配问题。

你可以试试这个,

# String to be searched in start of string

search = ("40-", "46-", "98-")

# boolean series returned with False at place of NaN 
series = df["computer_name"].str.startswith(search, na = False) 

# displaying filtered dataframe 
df[series] 

最新更新