python - 如何将具有行数组的 Dataframe 转换为 numpy 矩阵?

标签 python arrays pandas dataframe

我有一个 CSV 文件,其中每行都有一个数组。我想将行内容转换为列,即最后的矩阵(因为我有多行)。我可以使用 for 循环和 csv.reader 来完成它 - 但它很慢。所以,我有一个想法,Pandas 会更快,而且我可以在不需要循环的情况下进行转换。我读取该文件并获得 Size (200,1) 的数据帧类型 - 其中每行包含 700 个以逗号分隔的 float ,例如[0.4、0.5、0.3、...]

如果我对输出执行 .value,我只是将其转换为对象类型 - 仍然无法使用...

我只是不知道如何将这些数据转换为矩阵......

我是不是看错方向了?

ranges = pd.read_csv(name,usecols=['ranges'])

有效的是:

X = open(name)
csv_X=csv.reader(X)
ranges = []next(csv_X)#jump over the first row in the csv
for row in csv_X:
    ranges.append(ast.literal_eval(row[14]))
X.close()

但这真的很慢。所以,我关于使用 Pandas 的想法是加快速度。

最佳答案

数据集如下所示:

                            range
0  [5, 5, 7, 5, 7, 2, 0, 4, 1, 6]
1  [1, 0, 6, 1, 1, 5, 7, 8, 6, 7]
2  [2, 0, 4, 6, 6, 6, 5, 1, 6, 5]
3  [5, 5, 2, 7, 1, 8, 7, 2, 8, 4]
4  [1, 5, 6, 6, 8, 2, 6, 6, 3, 1]

你可以尝试:

pd.DataFrame(np.vstack(df.range.values))

产生:

   0  1  2  3  4  5  6  7  8  9
0  5  5  7  5  7  2  0  4  1  6
1  1  0  6  1  1  5  7  8  6  7
2  2  0  4  6  6  6  5  1  6  5
3  5  5  2  7  1  8  7  2  8  4
4  1  5  6  6  8  2  6  6  3  1

已编辑

如果您的行是字符串,例如:

                ranges
0  8,9,7,6,3,2,4,1,8,3
1  7,9,9,2,1,6,4,1,8,2
2  9,3,0,9,7,7,0,9,9,6
3  0,7,1,0,5,5,1,2,4,2
4  3,3,8,0,8,7,3,6,6,2
5  9,3,7,6,5,7,8,3,8,7
6  1,6,7,8,5,6,7,0,7,8
7  5,5,0,9,2,1,5,4,3,4
8  3,8,9,8,6,3,8,5,9,8
9  8,5,1,7,1,4,8,1,6,4

尝试:

pd.DataFrame(df.ranges.str.split(',').tolist())

产生:

   0  1  2  3  4  5  6  7  8  9
0  8  9  7  6  3  2  4  1  8  3
1  7  9  9  2  1  6  4  1  8  2
2  9  3  0  9  7  7  0  9  9  6
3  0  7  1  0  5  5  1  2  4  2
4  3  3  8  0  8  7  3  6  6  2
5  9  3  7  6  5  7  8  3  8  7
6  1  6  7  8  5  6  7  0  7  8
7  5  5  0  9  2  1  5  4  3  4
8  3  8  9  8  6  3  8  5  9  8
9  8  5  1  7  1  4  8  1  6  4

关于python - 如何将具有行数组的 Dataframe 转换为 numpy 矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54645014/

相关文章:

python - 从 GroupBy 对象中的组中获取除前 k 行以外的所有行

python - Dropbox Python API : Uploading a file

python - Redis 管道和 python 多处理

python - 如何向数组添加新的复数值?

python - 错误 'AttributeError: ' DataFrameGroupBy'对象没有属性'而数据帧上的 groupby 功能

python - 在 wxPython 中创建一个滚动面板

javascript - MyObject.prototype.reduce 回调无法访问数组方法

c - Pthread_join() 卡在线程数组上

django - 通过 session key 在请求之间访问 pandas 数据框对象

python - 在数据框中显示 NER Spacy 数据