zoukankan      html  css  js  c++  java
  • [开发技巧]·pandas如何保存numpy元素

    [开发技巧]·pandas如何保存numpy元素


    1.问题描述

    在开发的过程中遇到一个问题,就是需要把numpy作为pandas的一个元素进行保存,注意不是作为一列元素。但是实践的过程中却不顺利,会报错,现在我解决了这个问题,并且把心得和理解分享出来,希望能帮到后来人。

    2.开发实战

    1.新建一些伪数据,用于保存

    import pandas as pd
    import numpy as np
    
    l1 = [1,2,3,4]
    l2 = [.1,.2,.3,.4]
    
    lists = np.array([l1,l2])
    labels = [1,0]

    2.新建DataFrame进行保存并且显示

    df = pd.DataFrame()
    df["list"] = lists
    df["label"] = labels
    
    print(df)

    这时程序报错:

        raise Exception('Data must be 1-dimensional')
    Exception: Data must be 1-dimensional

    错误出现在df["list"] = lists,错误的原因是lists不是一维数据(Data must be 1-dimensional),为什么会出现这个问题呢?

    原因在lists = np.array([l1,l2]),lists成为了二维的np.array,shape为(2,4)。

    如何解决呢?需要把np.array转为list,就变为一维数据了

    3.修正代码

    import pandas as pd
    import numpy as np
    
    l1 = [1,2,3,4]
    l2 = [.1,.2,.3,.4]
    
    lists = np.array([l1,l2])
    lists = list(lists)
    labels = [1,0]
    
    df = pd.DataFrame()
    df["list"] = lists
    df["label"] = labels
    
    print(df)
    输出结果:
                       list  label
    0  [1.0, 2.0, 3.0, 4.0]      1
    1  [0.1, 0.2, 0.3, 0.4]      0

    可能会有些朋友觉得代码有些麻烦,为什么先用np.array([l1,l2])转换为np.array再用list(lists)转换为list,其实这是为了模拟真实使用场景。一般我们接触到的数据都是np.array,再保存为pandas,就会报错(Data must be 1-dimensional),解决方法就是转换为list。

    numpy.array和list区别是什么呢?后面我会通过一个博客来好好阐述一下。

  • 相关阅读:
    线性表的各种基本操作
    malloc&&free的系统运行机制及其源代码的理解
    剪枝的定义&&hdu1010
    hdu 1045
    hdu2094 stl之set的应用
    关联式容器的总结
    STL之map容器的详解
    2018-2019 ACM-ICPC 焦作赛区 部分题解
    2018-2019 ACM-ICPC 沈阳赛区 K. Let the Flames Begin
    2018-2019 ACM-ICPC 徐州区域赛 部分题解
  • 原文地址:https://www.cnblogs.com/xiaosongshine/p/10841818.html
Copyright © 2011-2022 走看看