Python:遍历DataFrame中的所有列标题,并为每个列标题创建新字典,其中键:基于两列的值对

Posted

技术标签:

【中文标题】Python:遍历DataFrame中的所有列标题,并为每个列标题创建新字典,其中键:基于两列的值对【英文标题】:Python: Loop Through All Column Headers In DataFrame and Create New Dictionary For Each Column Header With Key:Value Pairs Based on Two Columns 【发布时间】:2020-10-20 01:56:53 【问题描述】:

我目前有下面的示例数据集

我想做以下事情:

    为每个包含数据字典的列标题(house 除外)创建一个变量 上面的数据字典将“房屋”编号作为键,将该列中的信息作为值

例如,如果我在 Python 中输入 Bedrooms,结果输出将是:

'House1': 0,
 'House2': 1,
 'House3': 4,
 'House4': 3

或者如果我输入condition:结果会是

'House1': new,
 'House2': old,
 'House3': old,
 'House4': new

我尝试了下面的代码:

for col in df.columns: 
    col = dict(zip(foods_vector, df[col]))

但上面的代码是错误的,因为它没有将每个字典保存到其对应的标题列变量中。

【问题讨论】:

【参考方案1】:

这个函数会做:

def get_dict(df, col, indexed='House'):
    return df.set_index(indexed)[col].to_dict()

get_dict(df, 'condition')
# 'h1': 'new', 'h2': 'old', 'h3': 'old', 'h4': 'new'

【讨论】:

这不是我想要的;我需要能够仅执行列标题/变量名(即在 python 中运行“条件”并让它吐出所需的结果)。原因是我需要稍后在我的代码中将变量名本身用于其他事情 动态变量名,虽然在 Python 中可能,但强烈建议不要使用,因为它可以覆盖系统变量(想想我是否有一个名为 list 的列)。另外,您要问的是XY problems 的示例。

以上是关于Python:遍历DataFrame中的所有列标题,并为每个列标题创建新字典,其中键:基于两列的值对的主要内容,如果未能解决你的问题,请参考以下文章

Python/Pandas 遍历列

Python pandas 按行按列遍历DataFrame

更快地遍历一个 DataFrame 的行以将列添加到第二个 DataFrame

Python,遍历 Excel 电子表格

Python Pandas - 主要数据帧,想要删除较小数据帧中的所有列

根据列值删除Python Pandas中的DataFrame行[重复]