我正在提取一个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在上面提出的,但不需要实际将数据保存到持久静态文件中(