基于关键词在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)
运行任意一种方法后,你都会得到想要的结果:
| Name | Age | Salary | Phone |
|---|---|---|---|
| khan | 42 | 5000 | 01783232575 |
备注:内容来源于stack exchange,提问作者Firoj Kawser Jubayer
相关产品推荐
相关产品推荐

