df多条件筛选踩的坑

使用多条件筛选df,使用and连接,如下:

df1 = df1[df1['网元ID'] == netid and df1['cellId'] == cid]
df2 = df2[df2['网元ID'] == netid and df2['cellId'] == cid]

结果报错,如下:

Traceback (most recent call last):
  File "D:/ProcessDataProject/pack_ichart/LTE_NR_DP/DP/kpicompare.py", line 162, in <module>
    umekpi_compare_main(path)
  File "D:/ProcessDataProject/pack_ichart/LTE_NR_DP/DP/kpicompare.py", line 158, in umekpi_compare_main
    dict_df = split_df_by_cellid(kpi, df1,df2,dict_id)
  File "D:/ProcessDataProject/pack_ichart/LTE_NR_DP/DP/kpicompare.py", line 101, in split_df_by_cellid
    dfa = df1[(df1['网元ID'] == netid) and (df1['cellId'] == cid)]
  File "D:\ProcessDataProject\pack_ichart\venv\lib\site-packages\pandas\core\generic.py", line 1330, in __nonzero__
    f"The truth value of a {type(self).__name__} is ambiguous. "
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

修改为使用&连接,运行OK。如下:

df1 = df1[(df1['网元ID'] == netid) & (df1['cellId'] == cid)]
df2 = df2[(df2['网元ID'] == netid) & (df2['cellId'] == cid)]

分析:
and是逻辑运算符,返回True或者False。所以这里不能用and。但&是位运算符,用这里合适吗?好像不合适,但出来的结果是想要的。另外给的这个错误提示好像也不合适,我这里是df,错误也应该是df如何,其中没有变series的操作。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值