将字节csv字符串转换为panda数据帧



我正在提取一个csv字符串,需要将其解析为pd数据帧。示例字符串:

b'date,"total revenue"n2018-06-19,12.65n2018-06-20,3.90n2018-06-21,6.16n2018-06-22,9.06n2018-06-23,1.30n2018-06-24,1.88n2018-06-25,4.20n2018-06-26,2.46n2018-06-27,2.38n2018-06-28,1.06n`

如何将此字符串转换为2列pandas数据帧?非常感谢

我尝试了以下方法:

df = pd.DataFrame(list(reader(str(my_string))))

但输出都是偏斜的:

0     1
0                  b  None
1                  '  None
2                  d  None
3                  a  None
4                  t  None
5                  e  None
6                         
7      total revenue  None
8                    None

我在这里找到了答案(如何将字节数据转换为python-pandas数据帧?(:

from io import StringIO
s=str(bytes_data,'utf-8')
data = StringIO(s) 
df=pd.read_csv(data)
import sys
import pandas as pd
if sys.version_info[0] < 3: 
from StringIO import StringIO
else:
from io import StringIO

temp =  StringIO(my_string)
df =pd.read_csv(temp, sep=",", lineterminator='n')
df

你可以试试这个,不要忘记删除b,因为它将df的行作为二进制

如果二进制数据是csv文件,我会使用这种方式。

with open("test.csv", 'wb') as f:  
f.write(bytes_data)
df = pd.read_csv('test.csv')

您可以简单地使用io.BytesIO,而不是转换为字符串并使用io.StringIO:
例如,从API检索CSV数据:

import io
import requests
r = requests.get("http://127.0.0.1:5000/get_logs")
data = io.BytesIO(r.content)
df = pd.read_csv(data)

(这就是Eric在上面提出的,但不需要实际将数据保存到持久静态文件中(

最新更新