简体   繁体   English

小于或等于给TypeError的熊猫:无效的类型比较

[英]Pandas less than or equal to giving TypeError: invalid type comparison

I have 4 lists based on what I want to continuously filter my Pandas data-frame 我有4个基于要连续过滤我的熊猫数据框的列表

categoryList=['Parameter1', 'Parameter1', 'Parameter2', 'Parameter2']
conditionList=['b1', 'b41', 'm1', 'm2']
conditionDescList=['>', 'btn', '<=', 'btn']
conditionParamList=['1000', '2:3', '0.5', '0.1:0.3']

Now I am trying below code to filter rows from my 2 data-frames( df_custid_marker , df_custid_bp ) based on categoryList 现在我正在尝试下面的代码,以基于categoryList从我的2个数据帧( df_custid_markerdf_custid_bp )中过滤行

        k =0
        for i in conditionDescList:
            if(categoryList[k]=='Parameter1'):
                if(i=='btn'):
                    arrValues=conditionParamList[k].split(":")
                    minVal=arrValues[0]
                    maxVal=arrValues[1]
                    df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] > minVal) & (df_custid_marker[conditionList[k]] < maxVal)]
                elif(i=='>'):
                    df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] > conditionParamList[k])]
                elif(i=='<'):
                    df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] < conditionParamList[k])]
                elif(i=='<='):
                    df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] < conditionParamList[k]) | (df_custid_marker[conditionList[k]] == conditionParamList[k])]
                elif(i=='>='):
                    df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] > conditionParamList[k]) | (df_custid_marker[conditionList[k]] == conditionParamList[k])]
                else:
                    df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] == conditionParamList[k])]
            k+=1


        k =0
        for i in conditionDescList:
            if(categoryList[k]=='Parameter2'):
                if(i=='btn'):
                    arrValues=conditionParamList[k].split(":")
                    minVal=arrValues[0]
                    maxVal=arrValues[1]
                    df_custid_bp=df_custid_bp[(df_custid_bp[conditionList[k]] > minVal) & (df_custid_bp[conditionList[k]] < maxVal)]
                elif(i=='>'):
                    df_custid_bp=df_custid_bp[(df_custid_bp[conditionList[k]] > conditionParamList[k])]
                elif(i=='<'):
                    df_custid_bp=df_custid_bp[(df_custid_bp[conditionList[k]] < conditionParamList[k])]
                elif(i=='<='):
                    df_custid_bp=df_custid_bp[(df_custid_bp[conditionList[k]] < conditionParamList[k]) | (df_custid_bp[conditionList[k]] == conditionParamList[k])]
                elif(i=='>='):
                    df_custid_bp=df_custid_bp[(df_custid_bp[conditionList[k]] > conditionParamList[k]) | (df_custid_bp[conditionList[k]] == conditionParamList[k])]
                else:
                    df_custid_bp=df_custid_bp[(df_custid_bp[conditionList[k]] == conditionParamList[k])]
            k+=1

Now I am getting below error for <= df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] < conditionParamList[k]) | (df_custid_marker[conditionList[k]] == conditionParamList[k])] 现在,我在<= df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] < conditionParamList[k]) | (df_custid_marker[conditionList[k]] == conditionParamList[k])] df_custid_marker=df_custid_marker[(df_custid_marker[conditionList[k]] < conditionParamList[k]) | (df_custid_marker[conditionList[k]] == conditionParamList[k])]

raise TypeError("invalid type comparison")

问题是数据框列类型为float且列表为string

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM