如何解决如何从python中的各个文件夹中读取文件内容来创建新的dataframe / CSV文件
我有多个文件夹,其中包含带有值的CSV文件。我需要创建一个新的dataframe / CSV文件,其中每个文件和每个文件夹中每一列的内容都放置在此新dataframe中
文件夹1
A1.CSV
A B C D
aa bb cc dd
Folder-2
B1.CSV
E F G H
ee ff gg hh
文件夹3
C1.CSV
I J K L
ii jj kk ll
D1.CSV
M N O P
mm nn oo pp
新数据框应为
A B C D E F H I O P
aa bb cc dd ee ff hh ii oo pp
解决方法
我相信您要找的东西可以通过pd.concat()
完成。
您将不得不遍历每个文件夹中的每个文件,将单独的csv文件作为新的DataFrame加载,然后将其沿轴1(列)连接到其余数据帧。
假设您的工作目录是所有文件夹(例如“ Folder-1”,“ Folder-2”等)的存储位置,并且该目录中没有其他文件夹/文件,则可以使用以下代码: / p>
import os
import pandas as pd
# First creating your 'complete DataFrame' as an empty DataFrame.
complete_df = pd.DataFrame()
# Iterating through folders and files to find each csv:
for folder_name in os.listdir():
for csv_file in os.listdir(folder_name):
# Loading the individual csv as a pandas DataFrame
csv_df = pd.read_csv(f"{folder_name}/{csv_file}")
# If complete_df is empty,overwrite it with the first csv df.
if len(complete_df) == 0:
complete_df = csv_df
# Otherwise,add the new csv df to the current complete df.
else:
complete_df = pd.concat([complete_df,csv_df],axis=1)
代码还假定每个文件夹中唯一的文件是csv文件。
对于它的价值,如果最终的DataFrame实际上只是一个 行和多列,我建议对其进行转置,以使其改为多行而只有一列-以这种格式存储csv文件效率更高。
注意: 我在上面的代码中插入了f字符串的用法;仅当您的Python版本为3.6+时,这些才有效。如果没有,则应该可以使用.format()方法或使用字符串添加功能来替换此部分。
,这是我假设python脚本位于子文件夹的根目录下所做的事情:
import pandas as pd
import glob
# Initiate result DataFrame
result = pd.DataFrame()
# Loop over csv files in sub folders
for csv_file in glob.glob("*/*.csv"):
# Concat each new DataFrame with the result
result = pd.concat([result,pd.read_csv(csv_file,sep=',')],axis=1)
print(result)
支付csv分隔符的费用。
祝你好运
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。