python - 使用列表理解填充 pandas 值字典

标签 python pandas dictionary-comprehension

有没有办法用列表理解替换此语法?

for w in loc:
    dict_filter_data[w] = df.loc[df['location'] == w]

如果可以的话,会不会更快?

最佳答案

你可以这样做:

dict_filter_data = dict(df.loc[df['location'].isin(loc)]
                          .groupby('location').__iter__()
                       )

如果loc包含所有唯一的location值,那么你只需要:

dict_filter_data= dict(df.groupby('location').__iter__())

请注意,强烈建议在这里使用 groupby,它比使用 for 循环快得多。但你可以这样做:

dict_filter_data = {w : df.loc[df['location'] == w] for w in loc}

如果您想更新dict_filter_data(不从空开始):

dict_filter_data.update(dict(df.loc[df['location'].isin(loc)]
                               .groupby('location').__iter__()
                            )
                       )

或者

dict_filter_data = dict(dict_filter_data, 
                        **dict(df.loc[df['location'].isin(loc)]
                                 .groupby('location').__iter__()
                              )
                        )

关于python - 使用列表理解填充 pandas 值字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64303831/

相关文章:

python - 为什么在相同但以不同方式创建的嵌套字典中将值分配给键会导致不同的结果?

python - 如何生成同时将某些字符串转换为 float 的 Python 字典?

python - 当 ConnectionRefusedError : [WinError 10061] 时重试

python - Pandas 有条件地将数据框添加到另一个数据框

python - 如何在不命中数据库的情况下获取 db.ReferenceProperty 的键值?

python - 用于排列数据框的聚合函数

python - 有没有办法在 python pandas 中通过操作来对一组进行逆运算?

python - 如何填充字典理解中的可选字段?

python - 从 Node 脚本激活 Python virtualenv

python - 如何应用 sklearn 的 EllipticEnvelope 找出给定数据集中的最高异常值?