如何將DataFrame數(shù)據(jù)寫入csv文件及讀取
一、saveData函數(shù)
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是一個(gè)list,saveData函數(shù)會將list中的每個(gè)元素保存在csv文件中的一行。
但是存在一個(gè)問題:
csv文件中保存的數(shù)據(jù)如果直接讀取出來是str類型,需要進(jìn)行轉(zhuǎn)換
二、將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中每一行數(shù)據(jù)都轉(zhuǎn)變?yōu)閘ist,然后append到init_configs中,通過調(diào)用saveData函數(shù)可以將每一行數(shù)據(jù)表示的list都寫到csv文件中的一行。
這種情況生成的csv文件中每一行的各個(gè)元素之間都是用逗號隔開。

情況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中每個(gè)元素是一個(gè)二維list,由于CSV 文件是一種純文本格式,它無法直接存儲列表或其他復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
當(dāng)嘗試將 [[1, 2, 3, 4, 5]] 這個(gè)二維嵌套list寫入CSV文件時(shí),它會被自動轉(zhuǎn)換為字符串形式。
如下:

三、讀取csv文件
情況1
如果按照上面的方法1寫csv文件,可以按照如下方式將內(nèi)容讀出來:
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)可以用列表表達(dá)式的方式將csv文件中每一行的數(shù)據(jù)轉(zhuǎn)為一個(gè)list。
情況2
如果將整個(gè)list當(dāng)作字符串寫到了csv文件中,可以按照如下方式將內(nèi)容正確地讀出來:
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還原成原本的數(shù)據(jù)形式。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)同時(shí)對數(shù)據(jù)做轉(zhuǎn)換和換算處理操作示例
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)同時(shí)對數(shù)據(jù)做轉(zhuǎn)換和換算處理操作,涉及Python使用生成器表達(dá)式進(jìn)行數(shù)據(jù)處理的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
python dataframe列應(yīng)用正則表達(dá)式篩選方式
這篇文章主要介紹了python dataframe列應(yīng)用正則表達(dá)式篩選方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python 實(shí)現(xiàn)查詢Neo4j多節(jié)點(diǎn)的多層關(guān)系
今天小編就為大家分享一篇python 實(shí)現(xiàn)查詢Neo4j多節(jié)點(diǎn)的多層關(guān)系,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python代碼如何實(shí)現(xiàn)余弦相似性計(jì)算
這篇文章主要介紹了python代碼如何實(shí)現(xiàn)余弦相似性計(jì)算,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
python 創(chuàng)建一個(gè)保留重復(fù)值的列表的補(bǔ)碼
這篇文章主要介紹了python 創(chuàng)建一個(gè)保留重復(fù)值的列表的補(bǔ)碼的相關(guān)資料,需要的朋友可以參考下2018-10-10
python中os.path.dirname(path)詳細(xì)解釋和使用示例
這篇文章主要介紹了python中os.path.dirname(path)詳細(xì)解釋和使用示例,os.path.dirname是一個(gè)Python函數(shù),用于獲取文件路徑的目錄部分,它通常與os.path.basename結(jié)合使用,以分離路徑中的目錄和文件名,需要的朋友可以參考下2025-03-03
關(guān)于Python排序sort()函數(shù)和sorted()函數(shù)
這篇文章主要介紹了關(guān)于Python排序sort()函數(shù)和sorted()函數(shù),利用Python中的內(nèi)置函數(shù)去實(shí)現(xiàn)直接排序,需要的朋友可以參考下2023-04-04

