为啥我的输出总是以 NaN 的形式出现,我期待输出作为我的系列数据?

Posted

技术标签:

【中文标题】为啥我的输出总是以 NaN 的形式出现,我期待输出作为我的系列数据?【英文标题】:why my output is coming as NaN always , i am expecting output as my series data?为什么我的输出总是以 NaN 的形式出现,我期待输出作为我的系列数据? 【发布时间】:2019-12-20 13:26:34 【问题描述】:

我正在尝试下面的代码并为输出中的所有列/行获取 NaN

将 numpy 导入为 np 将熊猫导入为 pd

data1 = np.array([1,2,4,5,6])
data2 = np.array([11,12,14,15,16])
ser1 = pd.Series(data1)
ser2 = pd.Series(data2)
ser4 = pd.Series(data1)

dataframe = pd.DataFrame([ser1,ser2,ser2],['a','b','c'])

Output is : 

    0   1   2   3   4
a   1   2   4   5   6
b   11  12  14  15  16
c   11  12  14  15  16

但是对于下面的代码,我得到输出中所有数据的 NaN

dataframe = pd.DataFrame([ser1,ser2,ser2,ser4],['a','b','c','d'],['AA','BB','CC','DD','EE'])

AA  BB  CC  DD EE
a   NaN NaN NaN NaN NaN
b   NaN NaN NaN NaN NaN
c   NaN NaN NaN NaN NaN
d   NaN NaN NaN NaN NaN

我期望输出应该是列名分别为'AA'、'BB'、'CC'、'DD'、'EE'的系列数据的数据

试图在论坛上找到任何类似的问题,但找不到任何问题。

【问题讨论】:

【参考方案1】:

问题是索引对齐,这意味着原始列名称是从0NSeries 的索引值创建的,所以如果在列表中定义另一个值它不匹配并且pandas 在数据中返回NaN。

可能的解决方案是可以通过您的新列名创建每个系列的索引值:

data1 = np.array([1,2,4,5,6])
data2 = np.array([11,12,14,15,16])
i = ['AA','BB','CC','DD','EE']

ser1 = pd.Series(data1, index=i)
ser2 = pd.Series(data2, index=i)
ser4 = pd.Series(data1, index=i)

dataframe = pd.DataFrame([ser1,ser2,ser2],['a','b','c'])
print (dataframe)
   AA  BB  CC  DD  EE
a   1   2   4   5   6
b  11  12  14  15  16
c  11  12  14  15  16

您还可以在 Series 中指定索引名称:

ser1 = pd.Series(data1, index=i, name='a')
ser2 = pd.Series(data2, index=i, name='b')
ser4 = pd.Series(data1, index=i, name='c')

dataframe = pd.DataFrame([ser1,ser2,ser2])
print (dataframe)
   AA  BB  CC  DD  EE
a   1   2   4   5   6
b  11  12  14  15  16
b  11  12  14  15  16

【讨论】:

【参考方案2】:

您可以通过使用 np.vstack 堆叠为数组来忽略系列的索引,这将让您设置自己的索引和列:

pd.DataFrame(np.vstack([ser1,ser2,ser2,ser4]),['a','b','c','d'],['AA','BB','CC','DD','EE'])

   AA  BB  CC  DD  EE
a   1   2   4   5   6
b  11  12  14  15  16
c  11  12  14  15  16
d   1   2   4   5   6

【讨论】:

以上是关于为啥我的输出总是以 NaN 的形式出现,我期待输出作为我的系列数据?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 tensorflow 模型输出在 x 个时期后变为 NaN?

为啥是输出 (Nan,Nan)? [复制]

为啥jQuery减法输出NaN?

为啥我得到 NaN 以及如何获得预期的输出?

为啥 Pearson 相关输出为 NaN?

代码总是返回 NAN