zoukankan      html  css  js  c++  java
  • Pandas 错误笔记(持续更新)

    更新至2018.5.31

    字典生成DataFrame

    今天一个字典生成一个DataFrame,采用了以下形式,每一个value都是一个数(不是vector)

    df = pd.DataFrame({
        'id': data_speed.index,
        'Mileage':data_speed['count']*data_speed['mean'],
        'SpeedAve':data_speed['mean'],
        'SpeedStd':data_speed['std'],
        'SpeedMax':data_speed['max'],
        'HeightAve':data_height['mean'],
        'HeightStd':data_height['std'],
        })
    

    结果爆出了如下错误

    ValueError: If using all scalar values, you must pass an index
    

    原来所以,将字典生成DataFrame,您可以用{'A':[ 'a'], 'B': ['b']},当然也不一定非要这样,所以三种方法是可以成功的:
    引自: 统计师的Python日记:第四天的补充
    第一种:{'A':['a'], 'B': ['b']}

    >>> df = pd.DataFrame({'A': ['a'], 'B': ['b']})
    >>> df
       A  B
    0  a  b
    

    第二种:传入索引index

    >>> df = pd.DataFrame({'A': 'a', 'B': 'b'}, index=[0])
    >>> df
       A  B
    0  a  b
    

    第三种:DataFrame([dict])

    >>> df = pd.DataFrame([{'A': 'a', 'B': 'b'}])
    >>> df
       A  B
    0  a  b
    

    unhashable type: 'numpy.ndarray'

    这是一个大众的错误,pandas的DataFrame在列选择和行选择的时候几乎截然不同,而改错误几乎都出现在行选择的时候。

    >>> X=pd.DataFrame([[1],[2],[3],[4],[5],[6]])
    >>> X[[1,3,4],:]
    
    TypeError: unhashable type: 'list'
    

    行选择只有三种方法:

    • 对于连续的选择,采用matlab式的slicing方法:
    >>> X[1:3]
       0
    1  2
    2  3
    
    • 对于不连续的行选择,采用iloc[]方法,这个是基于位置的选择
    >>> X.iloc[[1,3,4]]
       0
    1  2
    3  4
    4  5
    
    • 对于不连续的行选择,采用loc[]方法,这个是基于index的选择
    >>> X.loc[[1,3,4]]
       0
    1  2
    3  4
    4  5
    

    这两种方法在这个例子中没有区别,因为其位置就是其index

    转载请注明原文链接,对本文有任何建议和意见请在评论区讨论,谢谢!
  • 相关阅读:
    [leetcode-495-Teemo Attacking]
    [leetcode-413-Arithmetic Slices]
    document对象操作:浏览器页面文件
    搭建wamp环境,数据库基础知识
    jenkins配置邮箱服务器(126邮箱)
    Linux命令之文件与用户权限
    并发与同步、信号量与管程、生产者消费者问题
    TypeScript设计模式之职责链、状态
    了解HTML列表
    CSS画出的图
  • 原文地址:https://www.cnblogs.com/bjwu/p/8975791.html
Copyright © 2011-2022 走看看