我目前正在尝试了解此警告:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
我在SO上看到了很多,但是尝试映射时出现了我的问题。
我的代码是这样的:
def merger(df):
qdf = pd.read_csv('domains_only_df.csv')
unfilt_rel_domains = qdf[['name', 'hits', 'owner', 'curated', 'domain']].copy()
rel_domains = unfilt_rel_domains[unfilt_rel_domains['curated'] == 0]
hits_dict= pd.Series(rel_domains.hits.values, index=rel_domains.owner).to_dict()
name_dict = pd.Series(rel_domains.name.values, index=rel_domains.owner).to_dict()
domain_dict = pd.Series(rel_domains.domain.values, index=rel_domains.owner).to_dict()
df['Hits'] = df['eid'].map(hits_dict).fillna(0)
df['Existing_domain'] = df['eid'].map(name_dict).fillna(0)
df['idn'] = df['eid'].map(domain_dict).fillna(0)
return df
错误发生在.map()
上,我的问题是如何使用警告的建议使用.loc[row_indexer,col_indexer] = value
来编写映射?我需要.map()
来提高速度和进行查询,但是我不确定如何避免此警告。
答案 0 :(得分:0)
字面上是一个班轮:
在做任何事情之前:设置
c3a9
来获取实际视图,而不是在另一个副本上醒来。