我有一个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]