python - 迭代 pandas DataFrame 中的行并创建一个字典

标签 python pandas dictionary hashmap

我正在尝试使用 pandas DataFrame 创建字典。

import pandas as pd

df = pd.DataFrame({'name': ["p1","p1","p2","p2","p2"],
                   'val': [0, 1, np.nan, 1, 0] })

我想创建一个字典,其中name列作为keyval列作为values。值将是一个列表。我正在使用 for 循环,因为 DataFrame 只有 100 行。

mydict = dict()
valList = []

for index, row in df.iterrows():

    # create list of values
    ......

    mydict[row['name']] = valList

预期输出:

{
 'p1': [0, 1],
 'p2': [nan, 1, 0]
}

对其他方法持开放态度,但我稍微倾向于使用 for 循环和 iterrows()

最佳答案

您可以使用groupby和字典理解:

d = {k:list(v) for k,v in df.groupby('name')['val']}

输出:

{'p1': [0.0, 1.0], 'p2': [nan, 1.0, 0.0]}
使用 iterrows(不是我最喜欢的选项)

注意。这在大型数据帧上会相当慢

from collections import defaultdict

d = defaultdict(list)

for _, row in df.iterrows():
    d[row['name']].append(row['val'])
    
dict(d)

关于python - 迭代 pandas DataFrame 中的行并创建一个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71009971/

相关文章:

python - pandas 在 lambda 操作后更新数据框

scala - Spark如何与CPython互操作

python - 从嵌套的字典python中获取键值

Python 网络服务

python - Python 中的 Outlook PST 文件解析

python - 有没有一种简单的方法可以在 tensorflow 中将 tf.data.Dataset.from_generator 中的特性与自定义 model_fn(Estimator) 结合使用

javascript - CouchDB,如何在一个 View 中计算两个值

python - 如何在迭代时从 json 中删除项目?

Python Pandas 根据标题值匹配 Vlookup 列

Python - 在字典中查找值的交集