如何根据列将文件夹中的所有csv文件合并为一个单独的csv文件?
如何根据列将文件夹中的所有csv文件合并为一个单独的csv文件?
给定一个包含多个具有不同列长度的csv文件的文件夹
必须使用Python的pandas将它们合并为一个单独的csv文件,并将文件名作为一列打印出来。
输入:https://www.dropbox.com/sh/1mbgjtrr6t069w1/AADC3ZrRZf33QBil63m1mxz_a?dl=0
输出:
编号 零食 价格 表名 5 橙子 55 Sheet1 7 苹果 53 Sheet1 8 哈密瓜 33 Sheet1 11 橙子 Sheet2 12 青苹果 Sheet2 13 哈密瓜 Sheet2
问题出现的原因:
在处理csv文件时,需要将一个文件夹中的所有csv文件合并成一个单独的csv文件,并且基于某些列进行合并。这个问题的出现可能是因为需要将多个csv文件的数据整合到一个文件中,并且只保留特定的列。
解决方法:
1. 首先,使用glob模块来获取文件夹中所有的csv文件路径。
2. 然后,使用pandas库的read_csv函数读取每个csv文件,并使用assign函数为每个数据框添加一个新的列,该列的值为文件名去掉扩展名后的部分。
3. 接下来,使用pandas库的concat函数将所有的数据框合并成一个数据框,并使用ignore_index参数重置索引。
4. 最后,打印合并后的数据框。
如果需要在处理数据表时将列名转换为小写,可以使用以下代码:
df.columns = df.columns.str.lower()
如果在处理过程中出现UnicodeDecodeError错误,可能是因为数据的编码问题。可以参考以下链接中的解决方案:
https://stackoverflow.com/q/48647122
https://stackoverflow.com/a/33819765
https://stackoverflow.com/q/31558994