import pandas as pd


def csv_interpolate_by_frame(input, output):
    df = pd.read_csv(input)  # 读取CSV文件

    df['simFrame'] = pd.to_numeric(df['simFrame'], errors='coerce')  # 转换simFrame列为数字类型
    df = df.sort_values(by='simFrame')  # 根据simFrame列进行排序
    full_simFrame_series = pd.Series(range(df['simFrame'].min(), df['simFrame'].max() + 1))  # 构建一个包含连续simFrame的完整序列
    df = df.merge(full_simFrame_series.rename('simFrame'), how='right')  # 使用merge方法将原始数据与完整序列合并，以填充缺失的simFrame行
    df = df.interpolate(method='linear')  # 对其他列进行线性插值
    df['simFrame'] = df['simFrame'].astype(int)  # 恢复simFrame列的数据类型为整数

    df.to_csv(output, index=False)  # 保存处理后的数据到新的CSV文件


if __name__ == '__main__':
    input_file = 'input.csv'
    output_file = 'output.csv'
    csv_interpolate_by_frame(input_file, output_file)
