gpt4 book ai didi

python - 为什么元组在保存到 csv 并重新加载数据框(pandas)后会变成字符串?

转载 作者:行者123 更新时间:2023-12-03 08:34:49 30 4
gpt4 key购买 nike

import pandas as pd
from random import random
from collections import namedtuple

Smoker = 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)])

我有这个数据框,其中每个单元格都是两个命名元组的元组。将其保存到 csv 文件并重新加载后,打印输出看起来相同,但每个单元格都变成了一个字符串。它是怎么发生的?我应该怎么做才能每次都获得相同的数据帧?

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))

最佳答案

我相信这是预期的行为。由于 csv 是基于文本的,因此当您将 object dtype 保存到 csv 时,自然的方法是使用字符串表示形式。因此,tuple((1,2)) 变为 "(1,2)"

现在,当您读回 csv 文件时,解释 "(1,2)" 的自然且安全的方式当然是字符串 '( 1,2)' 因为 Pandas 没有解析元组值列的引擎。

TLDR,这是正常且预期的行为。如果您想使用 object 数据类型保存和加载数据,则应使用二进制格式,例如 to_picklefrom_pickle 方法。

关于python - 为什么元组在保存到 csv 并重新加载数据框(pandas)后会变成字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64211251/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com