interpolate.py 988 B

1234567891011121314151617181920
  1. import pandas as pd
  2. def csv_interpolate_by_frame(input, output):
  3. df = pd.read_csv(input) # 读取CSV文件
  4. df['simFrame'] = pd.to_numeric(df['simFrame'], errors='coerce') # 转换simFrame列为数字类型
  5. df = df.sort_values(by='simFrame') # 根据simFrame列进行排序
  6. full_simFrame_series = pd.Series(range(df['simFrame'].min(), df['simFrame'].max() + 1)) # 构建一个包含连续simFrame的完整序列
  7. df = df.merge(full_simFrame_series.rename('simFrame'), how='right') # 使用merge方法将原始数据与完整序列合并,以填充缺失的simFrame行
  8. df = df.interpolate(method='linear') # 对其他列进行线性插值
  9. df['simFrame'] = df['simFrame'].astype(int) # 恢复simFrame列的数据类型为整数
  10. df.to_csv(output, index=False) # 保存处理后的数据到新的CSV文件
  11. if __name__ == '__main__':
  12. input_file = 'input.csv'
  13. output_file = 'output.csv'
  14. csv_interpolate_by_frame(input_file, output_file)