欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何將DataFrame數(shù)據(jù)寫入csv文件及讀取

 更新時(shí)間:2024年09月18日 10:59:14   作者:geerduo  
在Python中進(jìn)行數(shù)據(jù)處理時(shí),經(jīng)常會(huì)用到CSV文件的讀寫操作,當(dāng)需要將list數(shù)據(jù)保存到CSV文件時(shí),可以使用內(nèi)置的csv模塊,若data是一個(gè)list,saveData函數(shù)能夠?qū)ist中每個(gè)元素存儲(chǔ)在CSV文件的一行,但需要注意的是,默認(rèn)情況下讀取出的CSV數(shù)據(jù)類型為str

一、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ù)會(huì)將list中的每個(gè)元素保存在csv文件中的一行。

但是存在一個(gè)問(wèn)題:

csv文件中保存的數(shù)據(jù)如果直接讀取出來(lái)是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()會(huì)將df中每一行數(shù)據(jù)都轉(zhuǎn)變?yōu)閘ist,然后append到init_configs中,通過(guò)調(diào)用saveData函數(shù)可以將每一行數(shù)據(jù)表示的list都寫到csv文件中的一行。

這種情況生成的csv文件中每一行的各個(gè)元素之間都是用逗號(hào)隔開。

情況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 文件是一種純文本格式,它無(wú)法直接存儲(chǔ)列表或其他復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

當(dāng)嘗試將 [[1, 2, 3, 4, 5]] 這個(gè)二維嵌套list寫入CSV文件時(shí),它會(huì)被自動(dòng)轉(zhuǎn)換為字符串形式。

如下:

三、讀取csv文件

情況1

如果按照上面的方法1寫csv文件,可以按照如下方式將內(nèi)容讀出來(lá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)容正確地讀出來(lá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)

通過(guò)config = ast.literal_eval(eval(line))可以將變?yōu)樽址膌ist還原成原本的數(shù)據(jù)形式。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論