使用多条件筛选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的操作。