HUX布斯
这是您问题的有效解决方案。我目前的假设是仪器的采样率是相同的。由于您没有提供任何样本,所以我生成了一些数据。答案基于连接Wavelength列上的两个数据帧。import pandas as pdimport numpy as np##generating the test datablack_lambda = np.arange(300.2,795.5,0.1)red_lambda = np.arange(199.975,1027.43,0.1)I_black = np.random.random((1,len(black_lambda))).ravel()I_red = np.random.random((1,len(red_lambda))).ravel()df = pd.DataFrame([black_lambda,I_black]).Tdf1 = pd.DataFrame([red_lambda,I_red]).Tdf.columns=['lambda','I_black']df1.columns=['lambda','I_red']从这里开始:#setting lambda as index for both dataframesdf.set_index(['lambda'],inplace=True)df1.set_index(['lambda'],inplace=True)#concatenating/merging both dataframes into onedf3 = pd.concat([df,df1],axis=1)#since both dataframes are not of same length, there will be some missing values. Taking care of them by filling previous values (optional). df3.fillna(method='bfill',inplace=True)df3.fillna(method='ffill',inplace=True)#creating a new column 'division' to finish up the taskdf3['division'] = df3['I_black'] / df3['I_red']print(df3)输出: I_black I_red divisionlambda 199.975 0.855777 0.683906 1.251308200.075 0.855777 0.305783 2.798643200.175 0.855777 0.497258 1.720993200.275 0.855777 0.945699 0.904915200.375 0.855777 0.910735 0.939655... ... ... ...1026.975 0.570973 0.637064 0.8962581027.075 0.570973 0.457862 1.2470421027.175 0.570973 0.429709 1.3287431027.275 0.570973 0.564804 1.0109241027.375 0.570973 0.246437 2.316917