【发布时间】:2018-09-25 01:32:15
【问题描述】:
我想垂直合并两个 csv 文件。一个文件仅包含字符串(第一列,前三行)。第二个文件包含字符串和数字。
我可以打印出来。但是有问题将它们逐行保存到 csv 文件中。保持数据类型也有问题。 (数字到数字,字符串到字符串)。
以下是我使用的代码:
方法一:
import csv
file1 = ("/Users/yingdu/GitHub/20180807/String_.csv")
file2 = ("/Users/yingdu/GitHub/20180807/CovertFile_SampleData4.csv")
combined_file = ("/Users/yingdu/GitHub/20180807/combined_file.csv")
spreadsheet_filenames = [file1,file2]
for filename in spreadsheet_filenames:
with open(filename, 'r') as csvfile:
output = csv.reader(csvfile)
for row in output:
print row
以下是我的打印结果:
['SoftGenetics GeneMarker Trace Data Export']
['Raw Data']
['PAT_Ladder_1.fsa']
['Blue', 'Green', 'Yellow', 'Red', 'Orange']
['82.45', '97.65', '229.05', '85.25', '44.85']
['151.08', '167.48', '454.48', '136.68', '59.28']
['144.45', '161.25', '440.25', '133.65', '60.45']
['49.5', '65.9', '105.5', '69.1', '44.5']
['73.25', '109.45', '326.65', '70.85', '26.85']
['66.58', '97.18', '322.58', '65.38', '24.78']
['56.95', '77.35', '138.35', '91.95', '61.75']
['66.45', '79.65', '351.05', '69.25', '35.25']
以下是我用来编写将所有数据保存到新 csv 文件的 csv 文件的代码。我发现 csv 文件没有正确创建。
import csv
file1 = ("/Users/yingdu/GitHub/20180807/String_.csv")
file2 = ("/Users/yingdu/GitHub/20180807/CovertFile_SampleData4.csv")
combined_file = ("/Users/yingdu/GitHub/20180807/combined_file.csv")
spreadsheet_filenames = [file1,file2]
for filename in spreadsheet_filenames:
with open(filename, 'r') as csvfile:
output = csv.reader(csvfile)
with open(Combined_File, mode='w') as Combined_File:
for row in output:
print row
csv_writer = csv.writer(Combined_File, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
csv_writer.writerow(row)
方法二:
通过使用“dataframe.concat”。我将文件一和文件二视为两个对象(数据框)。合并是我期望的数据框。但是文件“combined_file.csv”不是由 df.to_csv 方法在这里创建/生成的。并且没有错误信息。
f1 = pd.read_csv(file1, header=None)
f2 = pd.read_csv(file2, header=None)
merged = pd.concat([f1, f2])
merged.to_csv(combined_file, index=None, header=None)
【问题讨论】:
标签: python dataframe merge export-to-csv