如何在Python Pandas中映射DataFrame列名与指定行单元格值
Pandas 提取目标行列值生成键值对字典
核心实现方法
要从筛选出的单行数据中提取对应值列表,直接利用Pandas行对象转列表的方法即可,以下是几种可靠方式:
方法1:通过
iloc取单行后转列表
因为df.loc[...]返回的是DataFrame类型,用iloc[0]定位到第一行(筛选结果为单行时),再调用tolist()转成值列表:rowValues = rowData.iloc[0].tolist()方法2:通过
values展平后转列表
把DataFrame的二维数值数组展平为一维,再转列表:rowValues = rowData.values.flatten().tolist()
完整示例代码
import pandas as pd import numpy as np # 模拟测试用DataFrame df = pd.DataFrame({ 'ColA': ['apple', 'banana'], 'ColB': [np.nan, 2], 'ColC': ['height', 'length'], 'ColD': ['width', 'depth'], 'ColE': ['size', 'volume'] }) # 获取列名列表 colValues = df.columns.values.tolist() # 筛选目标行 rowData = df.loc[df['ColA'] == 'apple'] # 提取行值列表 rowValues = rowData.iloc[0].tolist() # 生成列名-值的字典 result_dict = dict(zip(colValues, rowValues)) # 输出结果 print(result_dict) # 输出:{'ColA': 'apple', 'ColB': nan, 'ColC': 'height', 'ColD': 'width', 'ColE': 'size'}
多行筛选的处理方式
如果loc筛选出多行数据,需要遍历每一行生成字典的话,用iterrows()循环处理:
for _, row in rowData.iterrows(): row_values = row.tolist() single_row_dict = dict(zip(colValues, row_values)) # 这里可以添加写入Excel的逻辑,比如用openpyxl或pandas的to_excel指定列顺序
内容的提问来源于stack exchange,提问作者xlmaster
相关产品推荐
相关产品推荐

