python dtype o_python – 为什么dtype = str的空数据框填充“n”?

现在是

fixed in master,从17.0开始不应该是一个问题.

简而言之,DataFrames和Series都会创建一个空的NumPy数组并用np.nan值填充它,但DataFrame使用传递的str dtype作为此数组,而Series使用’O'(object)dtype覆盖它.

如果没有传入任何值,则两个类的__init__方法都会将空字典分配为默认数据:data = {}.

在测试了什么类型的对象数据之后,Series构造方法回退到生成np.nan值的数组,但是使用Numpy的’O’数据类型(不是str数据类型) – 请参阅here然后再看here:

np.empty(n, dtype='O') # later filled with np.nan

‘O’数据类型能够保存任何类型对象,因此np.nan在此处不会产生任何问题.

DataFrame的__init__方法也最终使用np.empty,然后用np.nan填充空数组.不同之处在于使用了指定的str数据类型(而不是’O’数据类型).代码基本上是as follows:

v = np.empty(len(index), dtype=str)

v.fill(np.nan)

现在,当使用str数据类型创建时,np.empty被强制转换为NumPy dtype’< U1'(即一个unicode字符),因此v变为:

array(['n', 'n'], dtype='

因为n是nan的第一个字母(np.nan仅表示为nan).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,Pandas库的DataFrame对象是一种非常方便的数据结构,可以用于处理和分析数据。有时,我们需要向DataFrame对象添加白列以便于后续填充数据或进行其他操作。那么,如何在Python中生成白列呢? 生成白列的方法很简单,我们只需在DataFrame对象中添加一个新的列名,并将初值设置为NaN或者字符串即可。例如,下面的代码演示了如何在DataFrame对象中生成一个名为‘new_col’的白列: ``` python import pandas as pd # 创建一个包含3行2列的DataFrame df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']}) # 生成一个名为‘new_col’的白列 df['new_col'] = '' # 或者 # df['new_col'] = float('nan') # 显示修改后的DataFrame对象 print(df) ``` 执行以上代码,我们可以看到生成的新的DataFrame对象如下所示: ``` col1 col2 new_col 0 1 A 1 2 B 2 3 C ``` 从上面的输出中可以看出,DataFrame对象中已经成功生成了一个名为‘new_col’的白列。 需要注意的是,在生成白列后,我们需要根据实际需要填充数据。可以使用loc方法或者直接对DataFrame对象的列进行赋值操作,例如: ``` python # 将第一行新列的值设置为‘X’ df.loc[0, 'new_col'] = 'X' # 直接对新列赋值 df['new_col'] = [1.0, 2.0, 3.0] # 显示修改后的DataFrame对象 print(df) ``` 以上代码将第一行新列的值设置为‘X’,并使用列表对新列进行了赋值操作。执行后,修改后的DataFrame对象如下所示: ``` col1 col2 new_col 0 1 A 'X' 1 2 B 1.0 2 3 C 2.0 ``` 在最后,需要注意的是,在Pandas中,DataFrame对象中的白列不影响其它列的操作或计算,也不会引发错误。因此,在需要时可以随时添加或删除白列。 ### 回答2: 在Python中,使用pandas库中的DataFrame可以方便地处理和分析数据。生成白列可以通过在DataFrame中添加一个的Series实现。 具体操作步骤如下: 1. 创建一个的Series,可以使用以下方式: ```python import pandas as pd s = pd.Series([]) ``` 2. 在DataFrame中添加白列,可以使用以下方式: ```python df['新的白列'] = s ``` 其中,“新的白列”是新添加的列名,需要与原DataFrame中的列名不同。 示例代码如下: ```python import pandas as pd # 创建DataFrame data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data) # 创建一个的Series s = pd.Series([]) # 在DataFrame中添加白列 df['C'] = s print(df) ``` 运行结果如下: ``` A B C 0 1 4 NaN 1 2 5 NaN 2 3 6 NaN ``` 可以看到,在原有的DataFrame中添加了一个白列“C”。 ### 回答3: 在Python的pandas库中,DataFrame是用于处理和分析数据的主要数据结构。当我们需要在DataFrame中生成一个白列时,可以采取如下的方法。 首先,我们可以使用DataFrame的assign方法来为DataFrame添加一列白列。具体方法如下: ``` import pandas as pd # 生成白列名为'new_column'的DataFrame df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df = df.assign(new_column=pd.Series(dtype='float64')) ``` 在这个例子中,我们定义了一个DataFrame,并使用assign方法添加了一个白列'new_column',并将其数据类型设定为float64。我们还可以使用其他数据类型,如int、str等。 除此之外,我们还可以使用pandas库中的insert方法来在DataFrame中插入一个白列。具体方法如下: ``` import pandas as pd # 插入白列名为'new_column'的DataFrame df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df.insert(loc=0, column='new_column', value=pd.Series(dtype='float64')) ``` 在这个例子中,我们定义了一个DataFrame,并使用insert方法在第0列处插入一个白列'new_column'。我们也将其数据类型设定为float64。 总之,无论是使用assign方法还是insert方法,在Python的pandas库中都可以轻松生成一个白列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值