让我们说我有csv格式字符串a =' 1,2,3 \ r4,5,6 \ r7,8,9 \ r'在python中。 我怎样才能获得" 3行x 3列" DataFrame [[1,2,3],[4,5,6],[7,8,9]]来自变量a?
感谢。
答案 0 :(得分:2)
您可以使用io
模块从字符串创建in-memory text stream。假设你有一个实际上是csv格式的字符串,那么:
In [1]: import io
In [2]: import pandas as pd
In [3]: s = '1,2,3\n4,5,6\n7,8,9'
In [4]: print(s)
1,2,3
4,5,6
7,8,9
使用io.StringIO
就像使用文件对象一样:
In [5]: pd.read_csv(io.StringIO(s))
Out[5]:
1 2 3
0 4 5 6
1 7 8 9
In [6]: pd.read_csv(io.StringIO(s), header=None)
Out[6]:
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
答案 1 :(得分:1)
试试这个:
temp = [i.split(',') for i in a.split('/r')]
result = [list(map(int, i)) for i in temp[:-1]]
答案 2 :(得分:0)
替代方案可以是:
输入:
a='1,2,3\n4,5,6\n7,8,9'
print a
1,2,3
4,5,6
7,8,9
转换为列表,然后转换为df:
import re
import pandas as pd
my_list = re.split("[,\n]", a)
df = pd.DataFrame(np.array(my_list).reshape(3,3), columns = list("abc"))
print df
输出:
a b c
0 1 2 3
1 4 5 6
2 7 8 9