我遇到了一个小挑战,我需要根据以下条件清理CSV文件中的数据:
1.如果存在带日期的数据,则从文件中删除带NA值的数据;
1.如果是重复的,则将其删除;和
1.如果数据只存在于它自己,就不要管它。
我目前能够完成2和3,但是我正在努力制定一个条件来捕获其中的1个标准。
CSV文件示例
Name,Environment,Available,Date
Server_A,Test,NA,NA
Server_A,Test,Yes,20/08/2022
Server_A,Test,Yes,20/09/2022
Server_A,Test,Yes,20/09/2022
Server_B,Test,NA,NA
Server_B,Test,NA,NA
目前代码
import csv
input_file = 'sample.csv'
output_file = 'completed_output.csv'
with open(input_file, 'r') as inputFile, open(output_file, 'w') as outputFile:
seen = set()
for line in inputFile:
if line in seen:
continue
seen.add(line)
outputFile.write(line)
目前,这有助于处理重复项和捕获唯一值。但是,我无法找到删除具有重复服务器的行的最佳方法。但是,这可能不会很好地工作,因为 set 类型是无序的,所以我不确定基于列进行比较的最佳方法,然后从那里向下筛选。
任何建议或解决方案,可以帮助我将不胜感激。
到目前为止的当前输出
Name,Environment,Available,Date
Server_A,Test,NA,NA
Server_A,Test,Yes,20/08/2022
Server_A,Test,Yes,20/09/2022
Server_B,Test,NA,NA
预期输出
Name,Environment,Available,Date
Server_A,Test,Yes,20/08/2022
Server_A,Test,Yes,20/09/2022
Server_B,Test,NA,NA
1条答案
按热度按时间14ifxucb1#
你可以使用panda来代替手动操作。我已经写了一个叫做custom filter的函数,它考虑到了这些条件。一个潜在的bug是使用pd.NA,如果不起作用,可以使用其他的np.nan或者None。