【问题标题】: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'的系列数据的数据

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

【问题讨论】:

    标签: python pandas numpy


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-19
        • 2013-03-20
        • 1970-01-01
        • 2021-10-26
        • 2023-04-08
        • 1970-01-01
        • 2020-01-16
        • 2020-02-03
        相关资源
        最近更新 更多