当前位置: 首页 > 面试题库 >

将numpy.array存储在Pandas.DataFrame的单元格中

蔺德曜
2023-03-14
问题内容

我有一个要存储’raw’的数据框numpy.array

df['COL_ARRAY'] = df.apply(lambda r: np.array(do_something_with_r), axis=1)

但似乎pandas试图“解压” numpy.array。

有解决方法吗?除了使用包装器之外(请参见下面的编辑)?

我尝试reduce=False没有成功。

编辑

这行得通,但是我必须使用’dummy’Data类来包装数组,这不能令人满意,也不是很优雅。

class Data:
    def __init__(self, v):
        self.v = v

meas = pd.read_excel(DATA_FILE)
meas['DATA'] = meas.apply(
    lambda r: Data(np.array(pd.read_csv(r['filename'])))),
    axis=1
)

问题答案:

在numpy数组周围使用包装器,即将numpy数组作为列表传递

a = np.array([5, 6, 7, 8])
df = pd.DataFrame({"a": [a]})

输出:

             一种
0 [5、6、7、8]

或者您可以apply(np.array)通过创建元组来使用,即如果您有一个数据框

df = pd.DataFrame({'id': [1, 2, 3, 4],
                   'a': ['on', 'on', 'off', 'off'],
                   'b': ['on', 'off', 'on', 'off']})

df['new'] = df.apply(lambda r: tuple(r), axis=1).apply(np.array)

输出:

     新的Ab ID
0 on on 1 [on,on,1]
1开关闭2 [开,关闭,2]
2 off on 3 [off,on,3]
3 off off 4 [off,off,4]



df['new'][0]

输出:

array(['on', 'on', '1'], dtype='<U2')


 类似资料:
  • 假设我有一个4乘4的网格,所以有16个单元格。每个单元格包含一个介于1,5之间的值。如。 现在我知道我需要使用Dijkstra算法。为了优化这一点,我需要使用优先级队列。 我的目标是找到到达目的地的每个单元格的最短总和。源在网格上可以是随机的,目标也可以是随机的。(即并非总是从左上到右下)。 我曾经研究过使用邻接矩阵的图。但是,使用此网格创建相邻矩阵是否明智?i、 e.将所有非相邻字段设置为无穷大

  • 4、存储单元的内容 上面,我们讲述了16位微机的内存管理及其相关知识,知道了内存单元物理地址的计算方法,这使我们能很容易地指定所要访问的存储单元。但存储单元里的内容是如何存放的呢?下面就能描述数值在内存的存放形式。 存储单元中所存放的二进制信息通常称为该存储单元的内容或值,并且规定: 一个字节的内容是该字节单元内存放的二进制信息; 一个字的内容是该字地址所指向的单元及其后继一个单元的内容拼接而成;

  • 问题内容: 有人可以告诉我,在以下情况下如何进行? 接收文件(MS文件,ODS,PDF) 通过Apache Tika提取公元核心元数据+通过jackrabbit-content-extractors提取内容 使用Jackrabbit将文档(内容)及其元数据存储到存储库中 ? 检索文档+元数据 我对第3点和第4点感兴趣… 详细信息:该应用程序正在以交互方式处理文档(一些分析-语言检测,单词计数等。+

  • 我们正试图在Linux服务器上启动hive元存储,但我们面临一个问题。如果我们尝试使用以下命令启动配置单元元存储服务: sudo hive服务转移 我们会遇到很多这样的错误: 原因:java.sql。SQLException:拒绝用户“hive”@“sandbox.hortonworks的访问。com“(使用密码:YES)在com.mysql.jdbc.SQLError.createSQLExce

  • 当产品存储在这个特定的单元格中时,我想稍后从这个特定的单元格中检索它。因此,我想通过给出输入行、位置和级别来使用rackPick块(或任何其他块)选择一个产品。 例如,我将产品A存储在第1行、位置20和级别2中。我想从这个特定的细胞中挑选产品。我怎样才能做到这一点?