我有一个shapefile路径列表(sf_list),并且我正在使用嵌套的for循环来遍历该列表和一个数据框(df),以查看该数据框的列(名称)行中是否有值是在该路径中,如果存在,则将该列表值附加到数据框的新列中(sf_path)。这就是我现在拥有的:
for sf in sf_list:
for row in df.iterrows():
df.loc[df['name'].isin(sf),'sf_path'] = [sf]
脚本运行,但是新列为空。该列表中填充了我需要的所有路径,并且该数据框的列包含特定的文本,该文本位于我要在新列的该行中填充的路径中。任何方向都赞赏。
更新:
现在我有:
for sf in sf_list:
for row in dlrules_df.iterrows():
dlrules_df.loc[dlrules_df['dl_foldername'] in sf, 'sf_path'] = sf
返回错误:
TypeError: 'in <string>' requires string as left operand, not Series
答案 0 :(得分:0)
您可以尝试一下吗?不推荐使用apply
,但对我来说这已经成为一种习惯。想花更多时间为您提供更有效的解决方案,但这已经是睡觉的时间了,这突然浮现在我的脑海。
sf = [list_of_folder_paths]
dlrules_df.loc[:, 'dl_foldername'].apply(lambda x: sf[sf.index(x)] if x in sf else None)
PS:未经测试,因此它可能会在某处折断,但我希望它能给您一些启发。