首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将numpy数组作为列添加到Pandas数据帧中

将numpy数组作为列添加到Pandas数据帧中
EN

Stack Overflow用户
提问于 2013-09-05 21:15:01
回答 5查看 299.6K关注 0票数 108

我有一个形状(X,Y)的Pandas数据帧对象,看起来如下:

代码语言:javascript
运行
复制
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]

以及形状(X,Z)的numpy稀疏矩阵(CSC),其形状如下所示

代码语言:javascript
运行
复制
[[0, 1, 0],
[0, 0, 1],
[1, 0, 0]]

如何在新的命名列中将矩阵中的内容添加到数据帧中,以便数据框架将以如下方式结束:

代码语言:javascript
运行
复制
[[1, 2, 3, [0, 1, 0]],
[4, 5, 6, [0, 0, 1]],
[7, 8, 9, [1, 0, 0]]]

注意,数据帧现在有了形状(X,Y+1),矩阵中的行是数据框架中的元素。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-05 21:29:40

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
import scipy.sparse as sparse

df = pd.DataFrame(np.arange(1,10).reshape(3,3))
arr = sparse.coo_matrix(([1,1,1], ([0,1,2], [1,2,0])), shape=(3,3))
df['newcol'] = arr.toarray().tolist()
print(df)

收益率

代码语言:javascript
运行
复制
   0  1  2     newcol
0  1  2  3  [0, 1, 0]
1  4  5  6  [0, 0, 1]
2  7  8  9  [1, 0, 0]
票数 99
EN

Stack Overflow用户

发布于 2013-09-05 22:13:48

考虑使用高维数据结构( 面板),而不是将数组存储在列中:

代码语言:javascript
运行
复制
In [11]: p = pd.Panel({'df': df, 'csc': csc})

In [12]: p.df
Out[12]: 
   0  1  2
0  1  2  3
1  4  5  6
2  7  8  9

In [13]: p.csc
Out[13]: 
   0  1  2
0  0  1  0
1  0  0  1
2  1  0  0

看横截面等.

代码语言:javascript
运行
复制
In [14]: p.xs(0)
Out[14]: 
   csc  df
0    0   1
1    1   2
2    0   3

http://pandas.pydata.org/pandas-docs/stable/dsintro.html#panel

票数 11
EN

Stack Overflow用户

发布于 2020-10-28 14:13:30

代码语言:javascript
运行
复制
df = pd.DataFrame(np.arange(1,10).reshape(3,3))
df['newcol'] = pd.Series(your_2d_numpy_array)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18646076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档