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

基于关键词在Pandas中实现非结构化DataFrame的值映射

基于关键词在Pandas中实现非结构化DataFrame的值映射

看起来你现在有个非结构化的Pandas DataFrame,里面的行都是成对的键值对,想要把这些分散的键值整理成标准的列-行格式对吧?我来帮你一步步实现这个需求。

首先先还原你的原始DataFrame,方便后续操作:

import pandas as pd

# 构建原始非结构化DataFrame
data = [
    ["Name", "khan", "Salary", 5000],
    ["Age", 42, "phone", "01783232575"]
]
df = pd.DataFrame(data)
print("原始非结构化DataFrame:")
print(df)

接下来我提供两种简单可靠的方法,帮你把这些键值对映射成目标格式:

方法一:扁平化数据后构建字典

我们可以先把整个DataFrame的元素转换成一维列表,再按“键-值”的顺序配对成字典,最后用字典生成标准DataFrame:

# 将DataFrame数据扁平化为一维列表
flat_data = df.values.flatten().tolist()
# 按索引奇偶拆分键和值,构建键值对字典
key_value_map = {flat_data[i]: flat_data[i+1] for i in range(0, len(flat_data), 2)}
# 转换为目标DataFrame并统一列名大小写
final_df = pd.DataFrame([key_value_map])
final_df.columns = final_df.columns.str.title()

print("\n处理后的标准DataFrame:")
print(final_df)

方法二:逐行遍历提取键值

如果你的原始DataFrame后续可能有更多行,这种逐行处理的方式会更灵活:

key_value_map = {}
# 遍历每一行数据
for row in df.values:
    # 每行中每两个元素为一组,提取键和值
    for idx in range(0, len(row), 2):
        key = row[idx]
        value = row[idx+1]
        key_value_map[key] = value

# 生成目标DataFrame并调整列名格式
final_df = pd.DataFrame([key_value_map]).rename(columns=str.title)

print("\n处理后的标准DataFrame:")
print(final_df)

运行任意一种方法后,你都会得到想要的结果:

NameAgeSalaryPhone
khan42500001783232575

备注:内容来源于stack exchange,提问作者Firoj Kawser Jubayer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:45:27