如何將DataFrame數據寫入csv文件及讀取
一、saveData函數
import csv def saveData(filePath, data): with open(filePath, 'w+', newline='') as f: writer = csv.writer(f) for row in data: writer.writerow(row)
如果data是一個list,saveData函數會將list中的每個元素保存在csv文件中的一行。
但是存在一個問題:
csv文件中保存的數據如果直接讀取出來是str類型,需要進行轉換
二、將DataFrame寫入csv文件
情況1
將list寫入csv文件
init_configs = [] for i, cluster in enumerate(clusters): init_configs.append([f"cluster {i}:"]) for _, row in cluster.iterrows(): config = row.tolist() init_configs.append(config) saveData('filePath', init_configs)
config = row.tolist()會將df中每一行數據都轉變?yōu)閘ist,然后append到init_configs中,通過調用saveData函數可以將每一行數據表示的list都寫到csv文件中的一行。
這種情況生成的csv文件中每一行的各個元素之間都是用逗號隔開。
情況2
將嵌套list寫入csv文件
init_configs = [] for i, cluster in enumerate(clusters): init_configs.append([f"cluster {i}:"]) for _, row in cluster.iterrows(): config = row.tolist() init_configs.append([config]) saveData('filePath', init_configs)
這種情況下init_configs中每個元素是一個二維list,由于CSV 文件是一種純文本格式,它無法直接存儲列表或其他復雜的數據結構。
當嘗試將 [[1, 2, 3, 4, 5]]
這個二維嵌套list寫入CSV文件時,它會被自動轉換為字符串形式。
如下:
三、讀取csv文件
情況1
如果按照上面的方法1寫csv文件,可以按照如下方式將內容讀出來:
import pandas as pd with open(filePath, 'r') as f: lines = f.readlines() filtered_lines = [line for line in lines if not line.startswith('cluster')] configs = [] for line in filtered_lines: config = [int(x) for x in line.strip().split(',')] configs.append(config) df = pd.DataFrame(configs)
可以用列表表達式的方式將csv文件中每一行的數據轉為一個list。
情況2
如果將整個list當作字符串寫到了csv文件中,可以按照如下方式將內容正確地讀出來:
import pandas as pd import ast with open(filePath, 'r') as f: lines = f.readlines() filtered_lines = [line for line in lines if not line.startswith('cluster')] configs = [] for line in filtered_lines: config = ast.literal_eval(eval(line)) configs.append(config) df = pd.DataFrame(configs)
通過config = ast.literal_eval(eval(line))可以將變?yōu)樽址膌ist還原成原本的數據形式。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python cookbook(數據結構與算法)同時對數據做轉換和換算處理操作示例
這篇文章主要介紹了Python cookbook(數據結構與算法)同時對數據做轉換和換算處理操作,涉及Python使用生成器表達式進行數據處理的相關操作技巧,需要的朋友可以參考下2018-03-03python 實現(xiàn)查詢Neo4j多節(jié)點的多層關系
今天小編就為大家分享一篇python 實現(xiàn)查詢Neo4j多節(jié)點的多層關系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python 創(chuàng)建一個保留重復值的列表的補碼
這篇文章主要介紹了python 創(chuàng)建一個保留重復值的列表的補碼的相關資料,需要的朋友可以參考下2018-10-10python中os.path.dirname(path)詳細解釋和使用示例
這篇文章主要介紹了python中os.path.dirname(path)詳細解釋和使用示例,os.path.dirname是一個Python函數,用于獲取文件路徑的目錄部分,它通常與os.path.basename結合使用,以分離路徑中的目錄和文件名,需要的朋友可以參考下2025-03-03