如何从路径字符串中获取文件夹名称并将其添加到 pandas 数据框中的新列?
How to get the folder name from path string and add it to a new column in pandas dataframe?
我想从 tar.gz 文件中读取文件夹的名称,并创建包含这些名称的列。
我正在使用此代码:
file_path = r"C:\Users\filename.tar.gz"
start_with = './mainfolder/'
import tarfile
import re
with tarfile.open(file_path, "r:*") as tar:
csv_path = tar.getnames()
csv_path = list(n for n in tar.getnames() if (n.endswith('.csv')) & (n.startswith(start_with)))
df = pd.DataFrame()
csv_list = []
for file in csv_path:
df_temp = pd.read_csv(tar.extractfile(file))
csv_list.append(df_temp)
df = pd.concat(csv_list)
在主文件夹中,有几个文件夹是有名字的。
从文件夹 "X" 读取 csv 文件后(例如),应在此 csv 文件中创建 "FolderName" 列,并且必须包含所有行的文件夹名称 ("X") .
因此对于每个 csv 文件。
路径字符串的示例:./mainfolder/1001_name
或 ./mainfolder/1002_some_name
在以下行之后:
df_temp = pd.read_csv(tar.extractfile(file))
您可以使用 os.path.dirname()
方法从 file
路径字符串中获取文件夹名称。更多信息 .
您需要 import os
模块。
示例:
#returns ./mainfolder/1001_name
full_folder_path = os.path.dirname(file)
#returns 1001_name
folder = os.path.basename(full_folder_path)
#returns name bit
result = folder[folder.index('_')+1:]
df_temp['FolderName'] = result
这将创建一个名为 FolderName
的新列并为所有行设置值。更多信息 here.
我想从 tar.gz 文件中读取文件夹的名称,并创建包含这些名称的列。
我正在使用此代码:
file_path = r"C:\Users\filename.tar.gz"
start_with = './mainfolder/'
import tarfile
import re
with tarfile.open(file_path, "r:*") as tar:
csv_path = tar.getnames()
csv_path = list(n for n in tar.getnames() if (n.endswith('.csv')) & (n.startswith(start_with)))
df = pd.DataFrame()
csv_list = []
for file in csv_path:
df_temp = pd.read_csv(tar.extractfile(file))
csv_list.append(df_temp)
df = pd.concat(csv_list)
在主文件夹中,有几个文件夹是有名字的。 从文件夹 "X" 读取 csv 文件后(例如),应在此 csv 文件中创建 "FolderName" 列,并且必须包含所有行的文件夹名称 ("X") . 因此对于每个 csv 文件。
路径字符串的示例:./mainfolder/1001_name
或 ./mainfolder/1002_some_name
在以下行之后:
df_temp = pd.read_csv(tar.extractfile(file))
您可以使用 os.path.dirname()
方法从 file
路径字符串中获取文件夹名称。更多信息
您需要 import os
模块。
示例:
#returns ./mainfolder/1001_name
full_folder_path = os.path.dirname(file)
#returns 1001_name
folder = os.path.basename(full_folder_path)
#returns name bit
result = folder[folder.index('_')+1:]
df_temp['FolderName'] = result
这将创建一个名为 FolderName
的新列并为所有行设置值。更多信息 here.