当前位置: 首页 > 知识库问答 >
问题:

如何创建一个空熊猫DataFrame与不同的数据类型分配给每个列?

卫鸿朗
2023-03-14

这篇文章提供了一种优雅的方法来创建指定数据类型的空数据帧。如果指定np。nan值初始化时,数据类型设置为浮点:

df_training_outputs = pd.DataFrame(np.nan, index=index, columns=column_names)

但是我想创建一个空数据框,每个列中有不同的数据类型。dtype关键字参数似乎只接受一个。

背景:我正在编写一个以增量方式生成数据的脚本,因此我需要在脚本执行期间将其存储在某个地方。我认为空数据帧(大到足以容纳所有预期的数据)是最好的方法。这一定是一个相当常见的任务,所以如果有人有更好的方法,请建议。

共有1个答案

陶福
2023-03-14

可以使用不同类型的列创建空数据帧的一种方法是,提供一个具有正确结构化数据类型的空numpy数组:

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.empty(0, dtype=[('a', 'u4'), ('b', 'S20'), ('c', 'f8')]))

>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 0 entries
Data columns (total 3 columns):
a    0 non-null uint32
b    0 non-null object
c    0 non-null float64
dtypes: float64(1), object(1), uint32(1)
memory usage: 76.0+ bytes
 类似资料:
  • 然后,我会添加初始值,然后查看这个数据,从前面的行计算新行,例如左右。 我目前使用的代码如下所示,但我觉得它有点难看,必须有一种方法直接使用DataFrame来实现这一点,或者只是一种更好的方法。注意:我使用的是Python2.7。

  • 我从熊猫数据帧文档开始:数据结构简介 我想在一个时间序列类型的计算中迭代地填充数据帧。所以基本上,我想用列A、B和时间戳行初始化数据帧,全0或全NaN。 然后,我会添加初始值并检查这些数据,根据之前的行计算新行,比如说< code > row[A][t]= row[A][t-1]1 左右。 我目前正在使用下面的代码,但我觉得它有点难看,必须有一种方法直接用数据帧来做这件事,或者一般来说是一种更好的

  • 我有一个pd DataFrame列,其中日期值的格式不同。例如“YYYY-MM-DD hh:MM:ss”和“DD.MM”。“YYYY”甚至“DD.MM”我想将它们全部转换为一种格式(例如,“YYYY-MM-DD”),并(在许多事情中)尝试过 查找日期未写为“YYYY-MM-DD hh:MM:ss”的行。然而,这不起作用。 因此,我检查了列的类型 然后我检查了一下 并收到了诸如类的datetime之

  • 问题内容: 我想创建一个充满NaN的Pandas DataFrame。在研究过程中,我找到了答案: 这段代码将导致一个DataFrame充满“对象”类型的NaN。因此,它们以后将无法与该方法一起使用。因此,我使用以下复杂代码创建了DataFrame(受此答案启发): 这将导致一个DataFrame填充有类型为“ float”的NaN,因此以后可以将其使用。有没有更优雅的方法来产生相同的结果? 问题

  • 问题内容: 我正在寻找一种等效于SQL的方法 pandas sql比较与无关。 仅适用于单个列,因此我想我可以合并这些列,或将它们放在列表/元组中并进行比较,但这似乎是熊猫应该以更原生的方式进行的操作。 我是否缺少明显的东西,或者没有办法做到这一点? 问题答案: 您可以使用该方法来获取DataFrame中的唯一行: 如果只想使用某些列来确定唯一性,则也可以提供关键字参数。请参阅文档字符串。

  • 问题内容: 我有一个熊猫DataFrame,其中包含多个列: 我想基于对数据框的每一行应用一个函数为此数据框创建两个新列。我不想多次调用该函数(例如,通过执行两次单独的调用),因为它占用大量计算资源。我尝试通过两种方式来执行此操作,但它们都不起作用: 使用: 我编写了一个函数,该函数接受a并返回我想要的值的元组: 尝试将此应用于DataFrame会出现错误: 然后,我将使用此问题中显示的方法将从返