首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python中的子文件夹的名称填充列?

用Python中的子文件夹的名称填充列?
EN

Stack Overflow用户
提问于 2018-07-30 13:09:09
回答 2查看 196关注 0票数 1

我写了这个问题,重点是熊猫,因为它是一个更受欢迎的模块,以了解类似的例子。

我想添加一个列,并在目录中填充每个文件的部分唯一地址:

示例:假设我从每个子文件夹中有两个名为:4555432456的文件,因此它们的路径如下:

代码语言:javascript
运行
复制
C:\Users\user\Desktop\SHAPE\45554\INS\INS.shp
C:\Users\user\Desktop\SHAPE\45554\INB\INB.shp
C:\Users\user\Desktop\SHAPE\32456\INS\INS.shp
C:\Users\user\Desktop\SHAPE\32456\INB\INB.shp

因此,我需要提取每一行-3位置并填充新列。

比如:

代码语言:javascript
运行
复制
   new_col
     45554
     45554
     32456
     32456
     etc..

守则:

代码语言:javascript
运行
复制
import pandas as pd
import os
import glob

    folder = path.Path(r"C:\Users\user\Desktop\SHAPE")
        files = []
            for fil in glob.iglob('**/Desktop/SHAPE/**/' ,recursive = True):
                try:
                    files.append(pd.read_table(fil))
                    fil['col'] = shpfile.split("\\")[-3]
                except ValueError as ex:
                    if not os.listdir(fil):
                       print(f'{fil} is empty')
            df = pd.concat(files, sort=True))
            df.to_csv(folder / 'all.csv')

怎样才能实现呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-30 13:15:47

您可以使用os模块来执行此操作。使用此模块的好处是,您的平台将使用正确的分隔符。

代码语言:javascript
运行
复制
import os

x = r'C:\Users\user\Desktop\SHAPE\45554\INS\INS.shp'

def get_folder(fp, k=5):
    return os.path.split(fp)[0].split(os.sep)[k]

x_folder = get_folder(x)  # '45554'

然后通过pd.DataFrame.assign在您的循环中应用

代码语言:javascript
运行
复制
for fil in glob.iglob('**/Desktop/SHAPE/**/' ,recursive = True):
    files.append(pd.read_table(fil).assign(col=get_folder(fil)))
票数 1
EN

Stack Overflow用户

发布于 2018-07-30 13:16:02

使用str.split

Ex:

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({"Path": ['C:\\Users\\user\\Desktop\\SHAPE\\45554\\INS\\INS.shp', 'C:\\Users\\user\\Desktop\\SHAPE\\45554\\INB\\INB.shp', 'C:\\Users\\user\\Desktop\\SHAPE\\32456\\INS\\INS.shp', 'C:\\Users\\user\\Desktop\\SHAPE\\32456\\INB\\INB.shp']})
df['col'] = df["Path"].str.split(r"\\").str[-3]
print(df)

输出:

代码语言:javascript
运行
复制
                                            Path    col
0  C:\Users\user\Desktop\SHAPE\45554\INS\INS.shp  45554
1  C:\Users\user\Desktop\SHAPE\45554\INB\INB.shp  45554
2  C:\Users\user\Desktop\SHAPE\32456\INS\INS.shp  32456
3  C:\Users\user\Desktop\SHAPE\32456\INB\INB.shp  32456
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51594725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档