首页 文章

将两个脚本合并为一个代码以进行csv文件数据验证

提问于
浏览
1

大家好,目前我有两个脚本,我想将它们合并为一个代码 . 第一个脚本从一组数据中查找缺少的时间戳,并使用NaN值填充空白行,然后保存到输出文件 . 第二个脚本比较一组数据中的不同行,并根据测试条件创建一个具有True / False值的新列 .

如果我将每个脚本作为一个函数运行,那么使用另一个函数调用它们,我会获得两个单独的输出文件如何只使用1个保存的输出文件进行此运行?

First Code

import pandas as pd
df = pd.read_csv("data5.csv", index_col="DateTime", parse_dates=True)
df = df.resample('1min').mean()
df = df.reindex(pd.date_range(df.index.min(), df.index.max(), freq="1min"))
df.to_csv("output.csv", na_rep='NaN')

Second Code

with open('data5.csv', 'r') as f:
    rows = [row.split(',') for row in f]
    rows = [[cell.strip() for cell in row if cell] for row in rows]

def isValidRow(row):
    return float(row[5]) <= 900 or all(float(val) > 7 for val in row[1:4])

header, rows = rows[0], rows[1:]
validRows = list(map(isValidRow, rows))

with open('output.csv', 'w') as f:
    f.write(','.join(header + ['IsValid']) + '\n')
    for row, valid in zip(rows, validRows):
        f.write(','.join(row + [str(valid)]) + '\n')

2 回答

  • 1

    在第二个代码中,将 data5.csv 更改为第二个代码的第一个输入 output.csv . 并确保file1.py和file2.py在同一目录中 . 因此,您在单个文件中修改的代码将如下所示:

    import pandas as pd
     df = pd.read_csv("data5.csv", index_col="DateTime", parse_dates=True)
     df = df.resample('1min').mean()
     df = df.reindex(pd.date_range(df.index.min(), df.index.max(), freq="1min"))
     df.to_csv("output.csv", na_rep='NaN')
    
     with open('output.csv', 'r') as f:
         rows = [row.split(',') for row in f]
         rows = [[cell.strip() for cell in row if cell] for row in rows]
    
     def isValidRow(row):
         return float(row[5]) <= 900 or all(float(val) > 7 for val in row[1:4])
    
     header, rows = rows[0], rows[1:]
     validRows = list(map(isValidRow, rows))
    
     with open('output.csv', 'w') as f:
         f.write(','.join(header + ['IsValid']) + '\n')
         for row, valid in zip(rows, validRows):
             f.write(','.join(row + [str(valid)]) + '\n')
    
  • 2

    让我们的代码作为文件名的函数:

    def first_code(file_in, file_out):
        df = pd.read_csv(file_in, ... )
        ...
        df.to_csv(file_out, ...)
    
    def second_code(file_in, file_out):
        with open(file_in, 'r') as f:
            ...
        ....
    
        with open(file_out, 'w') as f:
            ...
    

    您的解决方案可以是:

    first_code('data5.csv', 'output.csv')
    second_code('output.csv', 'output.csv')
    

    希望能帮助到你


    请注意,在同一文件中读取和写入没有问题 . 请确保先前已关闭该文件以避免副作用 . 这是通过使用 with 隐式完成的,这是一个很好的做法

相关问题