【问题标题】:fill pandas values dictionary using list comprehension使用列表理解填充熊猫值字典
【发布时间】:2020-10-11 12:08:21
【问题描述】:

有没有办法用列表推导替换这种语法?

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

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

【问题讨论】:

  • dict_filter_data 是否有以前的值,还是开始为空?
  • 它开始是空的

标签: python pandas dictionary-comprehension


【解决方案1】:

你可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2022-11-16
    • 2021-10-04
    相关资源
    最近更新 更多