将.pkl文件转换为.csv文件

6
我正在处理一个需要大数据的Python文件,但我无法编辑我的数据。请问有人可以建议我如何将.pkl文件转换成.csv文件的代码吗?

欢迎来到StackOverflow。您的问题不够明确。我假设您所说的pkl是指Python的pickle文件,它可以包含几乎任何内容,请问其中的数据是什么样子的?您已经尝试过什么了吗? - Nullman
是的,它是一个Python Pickle文件。它是记录10个人情绪的文件。 - Anindita
是的,但它长什么样子?它是一些列表吗?还是一些字典?或者是不同数据类型的混合物? - Nullman
它是一个包含字符串数据类型的列表。 - Anindita
每个字符串都是正确格式的CSV行吗?您能在问题中添加这样一个字符串的示例吗? - Nullman
2个回答

8

将PKL文件转换为CSV的最简单和易于操作的方法

import pickle as pkl
import pandas as pd
with open("file.pkl", "rb") as f:
    object = pkl.load(f)
    
df = pd.DataFrame(object)
df.to_csv(r'file.csv')

3

我在这里找到了一个类似的问题:

如何将Python对象保存为CSV文件?

你需要那里面的这个示例:

import base64, csv
with open('a.csv', 'a', encoding='utf8') as csv_file:
    wr = csv.writer(csv_file, delimiter='|')
    pickle_bytes = pickle.dumps(obj)            # unsafe to write
    b64_bytes = base64.b64encode(pickle_bytes)  # safe to write but still bytes
    b64_str = b64_bytes.decode('utf8')          # safe and in utf8
    wr.writerow(['col1', 'col2', b64_str])

我修改它,从你的pickle文件中读取:
import pickle        
import base64
import csv

your_pickle_obj = pickle.loads(open('data.pkl', 'rb').read())
with open('output.csv', 'a', encoding='utf8') as csv_file:
    wr = csv.writer(csv_file, delimiter='|')
    pickle_bytes = pickle.dumps(your_pickle_obj)            # unsafe to write
    b64_bytes = base64.b64encode(pickle_bytes)  # safe to write but still bytes
    b64_str = b64_bytes.decode('utf8')          # safe and in utf8
    wr.writerow(['col1', 'col2', b64_str])

这是错误的方法,他想把一个pickle转换成csv,而不是将csv转换成pickle。 - Nullman
这是从pickle到csv的转换 :) - user6035995
但是好的,我会编辑这个例子以加载pickle文件本身。 - user6035995
你能否上传pkl文件到某个地方以便测试? - user6035995
我在谷歌上搜索了一下这个错误信息。也许这是一个编码问题。有些人写了一个解决方案,对他们有效。他们使用pickle.loads而不是pickle.load,所以请尝试一下:your_pickle_obj = pickle.loads(open('data.pkl', 'rb').read()) - user6035995
在使用pickle.loads后,出现错误提示为--“需要一个类似字节的对象,而不是'_io.BufferedReader'”。请帮忙解决。 - Anindita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接