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