遍历dataframe列以查看单个单元格值是否在文件路径列表中

时间:2019-02-26 02:54:52

标签: pandas list loops

我有一个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

1 个答案:

答案 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:未经测试,因此它可能会在某处折断,但我希望它能给您一些启发。