在Pandas DataFrame中遍历多列并拼接十六进制字符串数据
解决Pandas DataFrame中十六进制字符串分组拼接问题
问题说明
你有一个包含A、B列的Pandas DataFrame,两列均为带空格分隔的十六进制字符串。需要将B列元素按组与A列对应位置的元素拼接,最终输出拼接后的字符串列表,要求用迭代循环实现。
输入数据处理
你提供的字典dtf中,A列有3个元素,B列有13个元素,我们将B列划分为3组:前4个元素对应A列第一个值,中间4个对应A列第二个值,最后5个对应A列第三个值。
代码实现
import pandas as pd # 构造输入数据 dtf = { 'A': ['00 12 3b 01 00 00 00 00','00 13 3b 01 00 00 00 00','00 14 3b 01 00 00 00 00'], 'B': ['59 d0 7f 10 27 f8 7f ff 7f ','60 d0 7f 10 27 f8 7f ff 7f ','61 d0 7f 10 27 f8 7f ff 7f ','62 d0 7f 10 27 f8 7f ff 7f ','64 d0 7f 10 27 f8 7f ff 7f ','65 d0 7f 10 27 f8 7f ff 7f ','66 d0 7f 10 27 f8 7f ff 7f ','67 d0 7f 10 27 f8 7f ff 7f ','69 d0 7f 10 27 f8 7f ff 7f ','70 d0 7f 10 27 f8 7f ff 7f ','71 d0 7f 10 27 f8 7f ff 7f ','72 d0 7f 10 27 f8 7f ff 7f ','73 d0 7f 10 27 f8 7f ff 7f '] } # 转换为DataFrame df = pd.DataFrame(dtf) # 划分B列分组,与A列元素一一对应 group_size = len(df['B']) // len(df['A']) remainder = len(df['B']) % len(df['A']) b_groups = [] start_idx = 0 for i in range(len(df['A'])): # 最后一组分配剩余的元素 end_idx = start_idx + group_size + (1 if i == len(df['A'])-1 else 0) b_groups.append(df['B'].iloc[start_idx:end_idx].tolist()) start_idx = end_idx # 迭代拼接每组的B元素与对应A值 result_list = [] for a_str, b_group in zip(df['A'], b_groups): for b_str in b_group: # 去除B字符串末尾多余空格后拼接 combined_str = f"{a_str} {b_str.strip()}" result_list.append(combined_str) # 查看最终结果 print(result_list)
代码解释
- 构造DataFrame:将你提供的字典转换为Pandas DataFrame,统一管理数据。
- 划分B列分组:计算每组基础长度,把剩余元素分配到最后一组,保证每个
A值对应一组B元素。 - 迭代拼接:通过两层循环完成拼接——外层遍历
A值与对应B组,内层遍历组内每个B元素,处理掉B元素末尾的多余空格后,与A值拼接并存入结果列表。 - 输出结果:
result_list即为你需要的分组拼接后的十六进制字符串列表。
内容的提问来源于stack exchange,提问作者dvpi
相关产品推荐
相关产品推荐

