使用列表理解来填充熊猫值字典

问题描述

是否有一种方法可以通过列表理解来替换此语法?

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__()
                              )
                        )