专栏首页源懒由码关于pandas.eval使用的一些问题。

关于pandas.eval使用的一些问题。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.eval.html?highlight=eval#pandas.DataFrame.eval

pandas.eval在官方文档中提示到的有点是执行高效率,同时可以使用字符串表达式进行计算,那么对于一些数学校验来说,是十分方便的。

df = pd.DataFrame(dict(a=range(5), b=range(5, 10)))
df.loc[0,'a'] = np.nan
df.eval("""
    c = a + b
    d = a + b + c
    a = 1
    f = (c>5) or (d > 9)""", inplace=False)

可以方便的得出校验。但是在使用中有以下问题:

1、NAN值问题,NAN值会无法计算。因此执行前,需要先替换掉NAN值.

df.fillna(0.0,inplace=True)  # 这个效果好点,df.isnull()如果遇到多类型数据会报错
#df[df.isnull()] = 0.0
df.eval("""
    c = a + b
    d = a + b + c
    a = 1
    f = (c>5) or (d > 9)""", inplace=False)

2、如果计算的键值不存在,会报错。

# 会提示KeyError
df.eval('e + b')

因此,需要先对列重新进行修正再进行计算。

#进行去重
df = df.reindex(columns = list(set(list(df.columns) + ['e'])),fill_value = 0)
df.eval('e + b')

综上所述:

1、使用前,需要对数据缺失值进行预处理;

2、需要对字符串表达式进行解析,然后重新构建数据列值。所以,最后还需要对表达式进行解析,提取里面的键值。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • pandas系列 - (二)关于两期时点数据的比较

    统计数据来说,有时点数据和时期数据。通常情况下,会进行两期数据的比较,现整理一个两期数据比较的场景应用。主要流程分为:

    forxtz
  • pandas系列 - (一)明细数据汇总简单场景应用

    官方文档:https://pandas.pydata.org/pandas-docs/stable/user_guide/index.html

    forxtz
  • python selenium 关于将网页打包为静态网页(mhtml)下载。

    需求:单纯的将page.source写入文件的方式,会导致一些图片无法显示,对于google浏览器,直接将页面打包下载成一个mhtml格式的文件,则可以进行离线...

    forxtz
  • Golang同步:锁的使用案例详解

    互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法 Lock Unlock ...

    李海彬
  • Golang同步:锁的使用案例详解

    互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法 Lock Unlock ...

    李海彬
  • Golang同步:锁的使用案例详解

    互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法 Lock Unlock ...

    李海彬
  • 数据分析索引总结(上)Pandas单级索引

    寄语:本文对单级索引中的loc、iloc、[]三种方法进行了详细的阐述。同时,对布尔索引,快速标量索引方式、区间索引方式做了详细介绍。

    Datawhale
  • Python数据分析--Pandas知识

    利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余的ID.

    py3study
  • Python中 Pandas 50题冲关

    Pandas 是基于 NumPy 的一种数据处理工具,该工具为了解决数据分析任务而创建。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据...

    程序IT圈
  • Python-科学计算-pandas-19-df分组上中下旬

    系统:Windows 10 语言版本:conda 4.4.10 编辑器:JetBrains PyCharm Community Edition 2018.2.2...

    zishendianxia

扫码关注云+社区

领取腾讯云代金券