作为一个新的python学习者,我正在努力创建依赖于字典中的文件格式的dataframe。
下面是我正在编写的脚本。因此,我的主要目标是使用if/else有条件地执行pd.read_csv(文件名)。然而,我不确定如何将正确的文件映射到(文件名)部分。
在文件名字典中,当有一个txt格式的文件时,我想使用df = pd.read_csv (文件名,分隔符= '|')来执行它。如果文件是csv格式的,那么我想通过df =pd.read_csv(文件名)来执行它。有人能帮我在这里添加什么才能将文件映射到适当的pd.read_csv选项吗?
filename = ["1.txt","2.csv","3.txt","4.csv"...etc]
sub = '.csv'
for file in filename:
if sub in file:
df = pd.read_csv(filename)
else:
df = pd.read_csv(filename, delimiter = '|')
发布于 2018-08-07 07:02:15
您可以使用zip
封装您正在寻找的功能,并列出理解:
# Create a list that maps the file's extension to a delimiter
delimiters = [
None if sub in file else '|'
for file in filename
]
# Iterate through the delimiter/file pairs produced by zip
for delimiter, file in zip(delimiters, filename):
df = pd.read_csv(file, delimiter=delimiter)
如果您只对获取CSV文件列表感兴趣,我建议您使用Python的pathlib
模块:
from pathlib import Path
here = Path('.')
csvs = [
file for file in here.iterdir()
if file.suffix == 'csv'
]
一旦你有了这个列表,你也可以在列表理解中创建一个数据帧列表。
https://stackoverflow.com/questions/51716343
复制相似问题