如果要将每个相同目标只对应一个武器的结果写入 Excel 表,可以对代码进行一些修改。以下是修改后的示例代码:

import pandas as pd
import math

# 读取Excel文件中的武器和目标数据
wb_weapons = pd.read_excel('C://Users//asus//OneDrive//桌面//武器的打击范围和坐111标.xlsx', sheet_name='Weapons')
wb_targets = pd.read_excel('C://Users//asus//OneDrive//桌面//读取被打击目标的坐标.xlsx', sheet_name='Targets')

# 转换数据为DataFrame格式
df_weapons = pd.DataFrame(wb_weapons)
df_targets = pd.DataFrame(wb_targets)

# 创建结果DataFrame
df_results = pd.DataFrame(columns=['Target', 'Weapon'])

# 筛选每个被打击目标能被哪些武器打击
for target_idx, target_row in df_targets.iterrows():
    target_name = target_row['Name']
    target_coordinates = (target_row['X'], target_row['Y'])
    
    weapon_name = None  # 存储能打击目标的武器名称
    
    for weapon_idx, weapon_row in df_weapons.iterrows():
        weapon_name = weapon_row['Weapon']
        weapon_range = weapon_row['Range']
        weapon_coordinates = (weapon_row['X'], weapon_row['Y'])
        
        distance = math.sqrt((weapon_coordinates[0] - target_coordinates[0])**2 + (weapon_coordinates[1] - target_coordinates[1])**2)
        
        if distance <= weapon_range:
            break
    
    # 将每个被打击目标和对应的武器添加到结果DataFrame中
    df_results = df_results.append({'Target': target_name, 'Weapon': weapon_name}, ignore_index=True)

# 将结果写入Excel文件
with pd.ExcelWriter('目标点对应武器.xlsx') as writer:
    df_results.drop_duplicates(subset='Target', inplace=True)  # 去除重复的目标
    df_results.to_excel(writer, sheet_name='Results', index=False)

在这个示例代码中,我们首先读取 Excel 文件中的武器和目标数据,并将其转换为 DataFrame 格式。然后,我们创建一个空的结果 DataFrame df_results,用于存储每个相同目标和对应的单个武器。

接下来,我们使用两个嵌套的循环遍历每个被打击目标和每个武器,并根据距离判断哪个武器能够打击目标。如果某个武器能够打击目标,我们将其名称存储到 weapon_name 变量中,并结束内层循环。

最后,我们将结果 DataFrame 写入到 Excel 文件中的 'Results' 工作表,并保存为名为 '目标点对应武器.xlsx' 的 Excel 文件。在写入之前,我们使用 df_results.drop_duplicates(subset='Target', inplace=True) 语句去除重复的目标,保留每个相同目标只对应一个武器的结果。

请注意,示例代码中的文件名、工作表名称和列名是基于假设的 Excel 文件中的数据位置,你需要根据实际情况进行相应的修改。同时,你可以根据需要调整结果写入的逻辑和格式,以满足你的需求。

Excel 表中 A 列相同目标对应 B 列唯一武器:Python 代码示例

原文地址: https://www.cveoy.top/t/topic/Osy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录