第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么元組在保存到 csv 并重新加載數(shù)據(jù)框(pandas)后會(huì)變成字符串?

為什么元組在保存到 csv 并重新加載數(shù)據(jù)框(pandas)后會(huì)變成字符串?

桃花長相依 2023-10-11 22:51:16
import pandas as pdfrom random import randomfrom collections import namedtupleSmoker    = namedtuple("Smoker", ["Female","Male"])Nonsmoker = namedtuple("Nonsmoker", ["Female","Male"])DF = dict() DF["A"] = [(Smoker(random(),random()), Nonsmoker(random(),random())) for t in range(3)]DF["B"] = [(Smoker(random(),random()), Nonsmoker(random(),random())) for t in range(3)]DF = pd.DataFrame(DF, index=["t="+str(t+1) for t in range(3)])我有這個(gè)數(shù)據(jù)框,其中每個(gè)單元格都是兩個(gè)命名元組的元組。將其保存到 csv 文件并重新加載后,打印輸出看起來相同,但每個(gè)單元格都變成了string。它是怎么發(fā)生的?我應(yīng)該怎么做才能每次都獲得相同的數(shù)據(jù)幀?DF.to_csv("results.csv", index_label=False)df = pd.read_csv('results.csv', index_col=0)print(df)for a,b in zip(df.A,df.B):    print(type(a),type(b))
查看完整描述

2 回答

?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

我相信這是預(yù)期的行為。由于csv是基于文本的,因此當(dāng)您將objectdtype 保存到時(shí)csv,自然的方法是使用字符串表示形式。于是就tuple((1,2))變成了"(1,2)"。

現(xiàn)在,當(dāng)您讀回csv文件時(shí),自然且安全的解釋方式"(1,2)"當(dāng)然是字符串'(1,2)',因?yàn)?Pandas 沒有解析元組值列的引擎。

TLDR,這是正常且預(yù)期的行為。如果您想使用 dtype 保存和加載數(shù)據(jù)object,您應(yīng)該使用二進(jìn)制格式,例如to_picklefrom_pickle方法。


查看完整回答
反對(duì) 回復(fù) 2023-10-11
?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

在讀取 csv 時(shí)獲取元組的一種方法是使用converters

前任:

import ast

df = pd.read_csv('results.csv', index_col=0, converters={"A": ast.literal_eval, 
                                                         "B": ast.literal_eval})


查看完整回答
反對(duì) 回復(fù) 2023-10-11
  • 2 回答
  • 0 關(guān)注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)