to_csv()和read_csv()用于包含序列化对象的数据帧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了to_csv()和read_csv()用于包含序列化对象的数据帧相关的知识,希望对你有一定的参考价值。

我已经证明了从pandas数据帧的单元格中存储和检索序列化对象在从csv存储和再次加载后失败了:

a = df['cookie'].iloc[0]
print (type(a))
>> <class 'requests.cookies.RequestsCookieJar'>

然后

df.to_csv('file2.csv')
df2 = pd.read_csv('file2.csv')
b = df2['cookie'].iloc[0]
print(type(b))
>> <class 'str'>

在它的单元格中,它只是看起来像方括号不同而是

c = '[' + b + ']'

..也不解决它。

顺便说说:

print(pd.__version__)
>> '0.19.2'

如果您需要其中一个对象进行测试,您可以制作如下:

import requests
url = 'http://www.facebook.com/'
r = requests.get(url)
c = r.cookies

pandas.DataFrame.to_csv尝试添加mode='wb'但只生成一个错误消息。

pandas.read_csv甚至没有包含mode选项,所以如果它确实工作不确定如何将它取回。

有任何想法吗?

答案

我不认为你可以将cookie或其他非平凡的对象存储为普通文本文件/ csv中的文本。但是,pickle将为您服务。

import pickle

# dump dataframe to a serialized pickle, df.pkl will be its filename
with open('df.pkl', 'wb') as output:
    pickle.dump(df, output)

# then you can load it back with
with open('df.pkl', 'rb') as infile:
    df_from_pickle = pickle.load(infile)
另一答案

引用字符串会解决问题吗?

import csv
df.to_csv(‘file2.csv’, csv.QUOTE_NONNUMERIC)

我不确定你是否可以从中获得你需要的东西,但也许......你可以将cookie转换为字典并从那里获取字符串值。

url = 'http://www.facebook.com/'
r = requests.get(url)
c = r.cookies
c_dict = dict(c)

以上是关于to_csv()和read_csv()用于包含序列化对象的数据帧的主要内容,如果未能解决你的问题,请参考以下文章

pandas to_csv read_csv编码错误

pandas使用read_csv读取数据使用skiprows参数跳过指定的数据行但保留表头pandas使用to_csv函数将dataframe保存为gzip压缩文件

pandas to_csv 参数 float_format 和 decimal 不适用于索引列

float64 与熊猫 to_csv

df.to_csv 结构化输出

熊猫列的 To_CSV 唯一值[重复]