1234567891011121314151617181920 |
- 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)
|