如何将使用“ \ r \ n”作为换行符的字符串转换为熊猫数据框

时间:2019-09-11 18:13:36

标签: python pandas pgp

我有一个字符串bytearray(b'onefish,twofish,greenfish,bluefish\r\n1,2,3,4'),我使用pgpy库从加密的csv文件中获得了此字符串。

我需要我的数据框看起来像这样。

      onefish twofish greenfish bluefish
0     1       2       3         4

到目前为止,我使用多个for循环来创建列表,然后将其放入字典中。

如何使用以下方法解决此问题: df = pd.Dataframe(bytearray(b'onefish,twofish,greenfish,bluefish\r\n1,2,3,4')可以在上方获得我想要的输出?

2 个答案:

答案 0 :(得分:3)

  • 根据给定数据。用'\ r \ n'分割数据。
  • 假设第一行始终是标头传递,将其作为列传递,将其余行作为数据传递。
>>>import pandas as pd
>>>b = b'onefish,twofish,greenfish,bluefish\r\n1,2,3,4\r\n5,6,7,8' 
>>>data = list(map(lambda x: x.split(','),b.decode('utf-8').split("\r\n")))
>>>pd.DataFrame(data[1:], columns=data[0])

    onefish     twofish     greenfish   bluefish
0      1          2            3           4
1      5          6            7           8

答案 1 :(得分:2)

据我所知,您可以使用io.BytesIO:

import pandas as pd
import io

df = pd.read_csv(io.BytesIO(bytearray(b'onefish,twofish,greenfish,bluefish\r\n1,2,3,4\r\n5,6,7,8\r\n9,10,11,12')))

print(df)

   onefish  twofish  greenfish  bluefish
0        1        2          3         4
1        5        6          7         8
2        9       10         11        12