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

如何將DataFrame數據寫入csv文件及讀取

 更新時間:2024年09月18日 10:59:14   作者:geerduo  
在Python中進行數據處理時,經常會用到CSV文件的讀寫操作,當需要將list數據保存到CSV文件時,可以使用內置的csv模塊,若data是一個list,saveData函數能夠將list中每個元素存儲在CSV文件的一行,但需要注意的是,默認情況下讀取出的CSV數據類型為str

一、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還原成原本的數據形式。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論