字节/指令到数据帧

2024-06-02 07:58:20 发布

您现在位置:Python中文网/ 问答频道 /正文

将数据转换为数据帧的最佳方法是什么?你知道吗

    data = b'{"word": "Gondwana", "date": "2019-03-27 13:07:12.404732"}'
           b'{"word": "alalus", "date": "2019-03-27 13:07:12.909517"}'
           b'{"word": "Balto-Slavonic", "date": "2019-03-27 13:07:14.911308"}'
           b'{"word": "peculatation", "date": "2019-03-27 13:07:15.421915"}'

我试过了。似乎不起作用。你知道吗

d = pd.DataFrame(dict(data))

Tags: 数据方法dataframedatadatedictwordpd
2条回答

首先将decode值转换为utf-8,然后通过ast.literal_evaljson.loads转换为列表理解中的词典:

data = [b'{"word": "Gondwana", "date": "2019-03-27 13:07:12.404732"}',
        b'{"word": "alalus", "date": "2019-03-27 13:07:12.909517"}',
        b'{"word": "Balto-Slavonic", "date": "2019-03-27 13:07:14.911308"}',
        b'{"word": "peculatation", "date": "2019-03-27 13:07:15.421915"}']

import ast   

df = pd.DataFrame([ast.literal_eval(x.decode("utf-8")) for x in data])
print (df)
                         date            word
0  2019-03-27 13:07:12.404732        Gondwana
1  2019-03-27 13:07:12.909517          alalus
2  2019-03-27 13:07:14.911308  Balto-Slavonic
3  2019-03-27 13:07:15.421915    peculatation

替代解决方案,在大数据中应该更快:

import json

df = pd.DataFrame([json.loads(x.decode("utf-8")) for x in data])

你不能仅仅用一个像python dict格式的字节串来构造字典,你需要以某种方式来解析它。你知道吗

如果你知道你的字节串总是一个有效的dict,你可以试试

dict(eval(b'{"word": "soning", "date": "2019-03-27 13:07:13.409948"}'))

你应该没事的。如果您不知道字节字符串中的内容,我建议不要使用eval。你知道吗

这里的另一个答案建议使用ast.literal_eval这比eval更安全,因为literal_eval不能用于计算复杂的表达式。 见:https://docs.python.org/3.5/library/ast.html#ast.literal_eval

您可以从ast模块中获取文本\u eval


from ast import literal_eval
literal_eval(b'{"word": "soning", "date": "2019-03-27 13:07:13.409948"}')

相关问题 更多 >