B行的数字都是整数,取值范围是1到30;C行的数字都是小数,取值范围是0.001到0.999。B行的数字都是从小到大排列的。 在保证准确率的前提下优化下面的程序。 ''' import pandas as pd # 读取两个 Excel 文件 df1 = pd.read_excel("1.xlsx") df2 = pd.read_excel("2.xlsx") # 定义输出 Dataframe output_df = pd.DataFrame(columns=["B", "C"]) # 遍历 df1 中的每一行,比较 B 和 C 列的数值是否与 df2 中相同 for index1, row1 in df1.iterrows(): for index2, row2 in df2.iterrows(): if row1["B"] == row2["B"] and row1["C"] == row2["C"]: # 如果 B 和 C 的数值相同,则将它们追加到 output_df 中,并跳出内层循环以继续处理下一行 output_df.loc[len(output_df)] = [row1["B"], row1["C"]] break # 保存输出 Excel 文件 output_df.to_excel("3.xlsx", index=False) '''
时间: 2024-02-13 15:01:29 浏览: 126
数字逻辑习题.docx
在代码中使用了两个嵌套的for循环,时间复杂度较高。可以考虑使用merge函数进行合并,然后筛选出符合条件的数据。代码示例如下:
```python
import pandas as pd
# 读取两个 Excel 文件
df1 = pd.read_excel("1.xlsx")
df2 = pd.read_excel("2.xlsx")
# 使用merge函数进行合并
merged_df = pd.merge(df1, df2, on=["B", "C"])
# 筛选出符合条件的数据
output_df = merged_df[["B", "C"]]
# 保存输出 Excel 文件
output_df.to_excel("3.xlsx", index=False)
```
这样可以避免使用嵌套循环,提高程序的效率。同时,使用merge函数进行合并也可以避免出现重复的数据。
阅读全文