pandas 包含Path列的数据框-创建新列

wtlkbnrh  于 2023-01-01  发布在  其他
关注(0)|答案(1)|浏览(103)

我有以下 Dataframe 。我想基于FilePath列创建新列。

FilePath
S:\\colab\a.csv
S:\\colab\b.csv
S:\\colab\c.csv
S:\\colab\apple\dog.txt
S:\\colab\apple\cat.pdf

下面是预期的输出。我想得到一个字符串中的文件层次结构,并将“”转换为“〉”,并删除文件路径中的“S:\”。我还想根据文件路径得到文件和目录的数量。例如,第一个示例的filecnt为3,因为它们是目录colab(a.csv,b.csv,c.csv)和一个目录(apple)中的3个文件。
在python中我怎么能做到这一点呢?
预期输出:

FilePath                   Hierarchy         FileCnt   DirCnt
S:\\colab\a.csv            colab             3         1
S:\\colab\b.csv            colab             3         1
S:\\colab\c.csv            colab             3         1
S:\\colab\apple\dog.txt    colab > apple     2         0
S:\\colab\apple\cat.pdf    colab > apple     2         0

到目前为止我有

df['Hierarchy'] = df['FilePath'].str[4:].str.replace('\', ' > ')
nhhxz33t

nhhxz33t1#

创建helper列有助于获取文件和目录的计数

import pandas as pd

splits = df['FilePath'].str.split('\\')
df['Hierarchy'] = splits.str[1:-1].str.join(' > ')

# Before/Final is before the last directory
df['Before/Final'] = splits.str[-3]

# Final/Dir is the last directory
df['Final/Dir'] = splits.str[-2]

# FileCnt is the number of files in the last directory (number of times it's Final/Dir appears in the column)
df['FileCnt'] = df.groupby('Final/Dir')['Final/Dir'].transform('count')

# Create a dictionary of the number of directories in the last directory {Final/Dir: DirCnt}
dir_cnt = df.groupby('Before/Final')['Final/Dir'].nunique().to_dict()

# DirCnt is the number of directories in the last directory, if it's not in the dictionary then it's 0
df['DirCnt'] = df['Final/Dir'].map(dir_cnt).fillna(0).astype(int)

# you can delete the columns you don't need
df.drop(['Before/Final', 'Final/Dir'], axis=1, inplace=True)

额外的列:
| 文件路径|层级|之前/最终|最终/指导|文件计数|直接计数|
| - ------| - ------| - ------| - ------| - ------| - ------|
| 文件夹:\colab\a. csv|科拉布|史:|科拉布|三个|1个|
| 文件夹:\colab\b. csv|科拉布|史:|科拉布|三个|1个|
| 文件夹:\colab\c. csv|科拉布|史:|科拉布|三个|1个|
| S:\colab\apple\dog.txt|可乐〉苹果|科拉布|苹果|第二章|无|
| S:\colab\apple\cat.pdf|可乐〉苹果|科拉布|苹果|第二章|无|
dir_cnt字典:
| 最终/指导|直接计数|
| - ------| - ------|
| 史:|1个|
| 科拉布|1个|

相关问题