python - 在 Python 中合并具有不同文件名的 CSV 文件

标签 python csv

<分区>

我是 Python 的新手,所以这个问题可能有点基础。我有 44 个具有相同 header 和不同文件名的 csv 文件。我想将它们全部合并到一个文件中。

每个文件名为“Votes-[member-name]-(2010-2014)-[download-time].csv”

标题不包括成员名称的列。我想将其添加为第一项。

这是我想做的一部分:how to merge 200 csv files in Python .我只是不确定如何遍历具有不同名称的文件,并将这些名称添加到 csv。

谢谢!

最佳答案

要遍历文件名,您可以使用与回答 here 类似的方法, 使用 glob:

import glob
import os
os.chdir("/mydir")
for files in glob.glob("*.csv"):
    print files

然后,将成员名称添加到标题中,您可以逐行打印所有 csv 文件。如果该行是标题,则在与标题相同的行上打印成员名称。 (这不是真正的代码,但你可以明白这一点)

for files in glob.glob("*.csv"):
    for lines in files:
         if line == header:
              print member,line
         else:
              print line

要拆分 CSV 文件并仅使用成员名称(稍作修改,以便没有连字符)

'Votes-[member name]-(2010-2014)-[download-time].csv'.split('-')[1]

bash 解决方案的更新:您可以保存此文本并从终端运行它(请参阅此处的 instructions 适用于 Mac)

生成 CSV 文件(非必要)

cat <<"EOF" > 1.csv
1,2,3
4,5,6
EOF

cat <<"EOF" > 2.csv
a,b,c
d,e,f
EOF

解析 CSV 文件 - 此脚本获取所有 CSV 文件并将其文件名写入第一列。它还将它们放入一个文件中(请注意,我在 debian linux 上测试,而不是 mac)。

rm -f all.csv
for fyle in *.csv ; do 
    echo | awk -v f=$fyle '{ print f","$0 }' $fyle >> all.csv
done
exit 0

第二次更新:如果您想删除重复的标题,最简单的方法是使用 shell 中的“grep -v”,它会选择所有不匹配的行。您可以选择仅存在于 header 中的通用字符串。

head -1 all.csv > nohead.csv # add one header line
grep -v "header string" all.csv >> nohead.csv # add rest of rows, with no headers

关于python - 在 Python 中合并具有不同文件名的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20684640/

相关文章:

Python - 比较两个 csv 文件中的重复值并将该行写入单独的 csv 文件中

java - 写入 CSV 文件,然后在 Appengine (Java) 中将其压缩

Python 合并两个 csv 文件 python

java - OpenCSV 解析器无法解析数据中的双引号

python - 在多个轴上具有多个刻度的雷达图

python - 如何在 Windows Vista 上将 Tkinter 与 Python 结合使用?

python - 无法在 Linux (Ubuntu) 中启动 Jupyter Notebook

python - 使用Python搜索csv文件并提取所需信息

Python:AttributeError: 'str'对象没有属性 'datetime'

python - 导入caffe导致ImportError : "No module named google.protobuf.internal" (import enum_type_wrapper)