我得到了一个包含此表单数据的 csv 文件,
我想从C列中提取数据并将它们写入一个新的csv文件中,如下所示,
所以我需要做两件事:
- 将“节点”和从 1 到 22 的数字写入第一行和第一列(因为在本例中,输入 csv 中的 A 列中有 22 个重复循环)
- 我已经提取了 c 列中的数据并写入输出 csv,如下所示,
我需要每 22 行转置一次这些数据,并将它们填充到 Excel 中从 B2 位置开始的行,然后是 B3、B4,...等。
很明显,我必须循环遍历每一行才能有效地完成此操作,但我不知道如何在 python 中应用 csv 模块。
我应该下载 xlrd 包,还是只能使用内置的 csv 模块来处理这个问题?
我正在 Windows 8.1 x64 下使用 python 2.7.6 和 pyscripter。如有任何建议,请随时给我,非常感谢!
最佳答案
阅读the csv python documentation .
使用 csv 读取器迭代行的简单方法:
import csv
X = []
spamreader = csv.reader('path_to_file/filename.csv',delimiter=',')
for row in spamreader:
X.append(row)
这将创建一个包含所有 csv 数据的变量。文件的结构将使其难以阅读,因为 cell_separator 是“,”,但每个单元格内也有多个逗号,并且由于括号的原因,将出现字符串和数字数据的混合,需要进行一些清理。如果您有权重新格式化 csv,如果每个单元格看起来像 1,2,0.01 而不是 (1,2,0.01),可能会更容易,还可以考虑在单元格之间使用不同的分隔符,例如“;”。
如果不希望进行一些繁琐的数据清理,请务必阅读上面链接的文档。
编辑:尝试以下操作
import csv
X = []
with open('path_to_file/filename.csv','rb') as csvfile:
spamreader = csv.reader(csvfile,delimiter=',')
for row in spamreader:
rowTemp = []
for i in range(len(row)):
if (i+1)%3==0: #gets every third cell
rowTemp.append(row[i])
X.append(rowTemp)
这是所有距离值的矩阵。然后尝试:
with open('path_to_output_file/output_file.csv','wb') as csvfile:
spamwriter = csv.writer(csvfile,delimter=',')
for sublist in X:
spamwriter.writerow(sublist)
不确定这是否正是您正在寻找的内容,但应该很接近。它输出一个删除了所有节点对的 csv 文件
关于python - 从一个 csv 文件中提取指定数据,然后使用 python 分配给另一个 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22779964/