【发布时间】:2021-05-29 18:48:54
【问题描述】:
我有一个数据结构,我想写入 1 行中的 csv 文件。 这是在下一次迭代运行时,它为我正在创建的 csv 的每个标题字段添加一个新行。
例如,我尝试写入 csv 的行如下所示。在这里,我希望列表的每个元素都放在单独的列中。意思是,4.1% 应该到第 2 列,11.5% 到第 3 列,依此类推。
rowdict = {tuple:4}
('Row 1 data', ['4.1%', '11.5%', '21.1%', '2.6%', '14.8%', '0.4%', '9.6%', '35.6%', '0.0%', '0.4%'], [11, 31, 57, 7, 40, 1, 26, 96, 0, 1], 270)
我的sn-p:
f = open(completeName + '.csv', 'a', newline='', encoding='utf-8')
with f:
# identifying header
header = header_list
writer = csv.DictWriter(f, fieldnames=header)
# writing data row-wise into the csv file
writer.writeheader()
all_perce_val = ["{:.1%}".format(x) for x in all_fractions_list]
for i in range(1,len(all_perce_val)):
writer.writerow((str(os.path.split(os.path.split(directory)[0])[1]), all_perce_val, count_of_each_type, total_cycle_count))
print("Finished writing the csv file at:"+completeName)
我正在努力弄清楚如何将我必须的多个列表传递给 writerow() 以便它以我需要的方式编写它们。
更新:我改变了方法并尝试使用数据框
data_row = []
data_row.extend([str(os.path.split(os.path.split(directory)[0])[1])])
data_row.extend(all_perce_val)
data_row.extend(count_of_each_type)
data_row.extend([total_cycle_count])
final_data_row = [data_row]
df_row = pd.DataFrame(data=final_data_row, columns=header).fillna('')
mode = 'w' if header_flag else 'a'
df_row.to_csv(completeName + '.csv', mode=mode, index=None)
header_flag = False
但是,我想避免在每次循环迭代中编写列名。上面的 sn-p 正在苦苦挣扎。
【问题讨论】:
标签: python python-3.x dataframe dictionary tuples