使用列表理解填充 pandas 值字典
fill pandas values dictionary using list 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__()
)
)
有没有办法用列表推导式替换此语法?
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__()
)
)