You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在for循环中向DataFrame追加值?十六进制转二进制存储异常求助

解决十六进制转二进制后循环存入DataFrame仅显示单个值的问题

问题根源

你这情况是因为循环里每次都直接重新创建DataFrame,把之前的结果全覆盖了,自然最后只剩最后一次迭代的值。

正确做法1:先收集结果到列表,再转DataFrame

先初始化一个空列表,把每次循环转换后的二进制结果追加进去,最后一次性生成DataFrame,这样不会覆盖之前的数据:

import pandas as pd

# 示例十六进制数据
hex_data = ['A1', 'B2', 'C3', 'D4']
binary_results = []

for hex_val in hex_data:
    # 十六进制转二进制,zfill(8)保证补全到8位(可按需调整位数)
    binary_val = bin(int(hex_val, 16))[2:].zfill(8)
    binary_results.append(binary_val)

# 生成包含所有结果的DataFrame
df = pd.DataFrame({'十六进制': hex_data, '二进制': binary_results})
print(df)

正确做法2:用pandas的apply方法(更高效,避免手动循环)

如果已经有原始DataFrame,直接用apply批量处理,比手动循环更简洁:

import pandas as pd

# 原始DataFrame
df = pd.DataFrame({'十六进制': ['A1', 'B2', 'C3', 'D4']})

# 定义转换函数
def hex_to_bin(hex_str):
    return bin(int(hex_str, 16))[2:].zfill(8)

# 批量转换生成新列
df['二进制'] = df['十六进制'].apply(hex_to_bin)
print(df)

错误写法示例(别这么干)

你之前大概率是这么写的,每次循环都重新赋值DataFrame,导致之前的数据全部丢失:

import pandas as pd

hex_data = ['A1', 'B2', 'C3', 'D4']

# 错误:每次循环都创建新的DataFrame,仅保留最后一次结果
for hex_val in hex_data:
    binary_val = bin(int(hex_val, 16))[2:].zfill(8)
    df = pd.DataFrame({'二进制': [binary_val]})

print(df)  # 仅显示最后一个值'D4'的二进制结果

内容的提问来源于stack exchange,提问作者min chul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:15:35