MSJs31
140
2021-06-10 09:51:28 작성 2021-06-10 09:52:04 수정됨
42
578

파이썬 질문 있어요!!



l = len(df_result_dataframe)

for i in range(l):
    row = result.iloc[i]
    if [df_result_dataframe['gas'] == 1] :
        df_result_dataframe['event_type'] == '가스 이상'
    if [df_result_dataframe['elec'] == 1]:
        df_result_dataframe['event_type'] == '전기 이상'
    if [df_result_dataframe['water'] == 1]:
        df_result_dataframe['event_type'] == '수도 이상'
    if [df_result_dataframe['channel_tv'] == 1]:
        df_result_dataframe['event_type'] == '채널 이상'
    if [df_result_dataframe['remocon_tv'] == 1]:
        df_result_dataframe['event_type'] == '리모콘 이상'
    if [df_result_dataframe['motion_ref'] == 1]:
        df_result_dataframe['event_type'] == '냉장고 움직임 이상'
    if [df_result_dataframe['door_ref'] == 1]:
        df_result_dataframe['event_type'] == '냉장고 문 열림 이상'
    if [df_result_dataframe['totalair_air'] == 1]:
        df_result_dataframe['event_type'] == '실내공기 이상'
    if [df_result_dataframe['motion_air'] == 1]:
        df_result_dataframe['event_type'] == '공기청정기 움직임 이상'
    if [df_result_dataframe['temp_air'] == 1]:
        df_result_dataframe['event_type'] == '공기청정기 온도 이상'
    if [df_result_dataframe['temp_ref'] == 1]:
        df_result_dataframe['event_type'] == '냉장고 온도 이상'
    if [df_result_dataframe['hum_air'] == 1]:
        df_result_dataframe['event_type'] == '공기청정기 습도 이상'
    if [df_result_dataframe['hum_ref'] == 1]:
        df_result_dataframe['event_type'] == '냉장고 습도 이상'

        print(df_result_dataframe)


이렇게해서 데이터베이스에 업데이트 시키고 싶은데요 각각 1일경우 가스이상,공기청정기이상,뭐 이상 이상 코멘트를 추가하고 싶은데 어떻게 해야할까요...ㅠㅠㅠ

13개라서 경우의수 8192개를 전부다 만들기는 힘들꺼 같습니다..ㅠㅠㅠㅠㅠ

0
  • 답변 42

  • MSJs31
    140
    2021-06-10 10:00:10

    event_type에 1인건 추가 추가 추가 추가 추가 이렇게해서  코멘터리를 만들구 싶습니다.  

  • JadeKim
    258
    2021-06-10 11:20:26 작성 2021-06-10 11:49:17 수정됨

    이렇게하면 되지않을까요? 원하시는 것이 무엇인지 정확히 이해는 못했습니다.

    def get_type(df_result_dataframe):
        if [df_result_dataframe['gas'] == 1] :
            return '가스 이상'
        if [df_result_dataframe['elec'] == 1]:
            return  '전기 이상'
        if [df_result_dataframe['water'] == 1]:
            return  '수도 이상'
        if [df_result_dataframe['channel_tv'] == 1]:
            return  '채널 이상'
        if [df_result_dataframe['remocon_tv'] == 1]:
            return  '리모콘 이상'
        if [df_result_dataframe['motion_ref'] == 1]:
            return  '냉장고 움직임 이상'
        if [df_result_dataframe['door_ref'] == 1]:
            return  '냉장고 문 열림 이상'
        if [df_result_dataframe['totalair_air'] == 1]:
            return  '실내공기 이상'
        if [df_result_dataframe['motion_air'] == 1]:
            return  '공기청정기 움직임 이상'
        if [df_result_dataframe['temp_air'] == 1]:
            return  '공기청정기 온도 이상'
        if [df_result_dataframe['temp_ref'] == 1]:
            return  '냉장고 온도 이상'
        if [df_result_dataframe['hum_air'] == 1]:
            return  '공기청정기 습도 이상'
        if [df_result_dataframe['hum_ref'] == 1]:
            return  '냉장고 습도 이상'
    
    df_result_dataframe['event_type'] = df_result_dataframe.apply(get_type, axis=1)



    def get_type(df_result_dataframe):
        tmp = ''
        if [df_result_dataframe['gas'] == 1] :
            tmp += '가스 이상,'
        if [df_result_dataframe['elec'] == 1]:
            tmp += '전기 이상,'
        if [df_result_dataframe['water'] == 1]:
            tmp += '수도 이상,'
        if [df_result_dataframe['channel_tv'] == 1]:
            tmp += '채널 이상,'
        if [df_result_dataframe['remocon_tv'] == 1]:
            tmp += '리모콘 이상,'
        if [df_result_dataframe['motion_ref'] == 1]:
            tmp += '냉장고 움직임 이상,'
        if [df_result_dataframe['door_ref'] == 1]:
            tmp += '냉장고 문 열림 이상,'
        if [df_result_dataframe['totalair_air'] == 1]:
            tmp += '실내공기 이상,'
        if [df_result_dataframe['motion_air'] == 1]:
            tmp += '공기청정기 움직임 이상,'
        if [df_result_dataframe['temp_air'] == 1]:
            tmp += '공기청정기 온도 이상,'
        if [df_result_dataframe['temp_ref'] == 1]:
            tmp += '냉장고 온도 이상,'
        if [df_result_dataframe['hum_air'] == 1]:
            tmp += '공기청정기 습도 이상,'
        if [df_result_dataframe['hum_ref'] == 1]:
            tmp += '냉장고 습도 이상,'
        return tmp[:-1]
    
    df_result_dataframe['event_type'] = df_result_dataframe.apply(get_type, axis=1)


  • 애프미
    162
    2021-06-10 11:41:00

    파이썬을 이용해서 8192개의 경우수에 해당하는 내용을 txt 파일로 만들어 이 txt 파일을 읽어 들인 다음, 각 경우의 수에 해당하는 내용을 할당하는 방법이 제일 먼저 시도해 볼수 있는 방법인데 그 다음은 조금씩 개선하면 될 것 같네요. 

  • MSJs31
    140
    2021-06-10 13:48:36 작성 2021-06-10 13:49:14 수정됨


    JadeKim님 말씀하신데로 tmp에 글자가 추가되기는 하는데요;; 0하고 none 값도 전부 들어가버리네요;;

  • JadeKim
    258
    2021-06-10 13:52:42

    @MSJs31

    들어가있는 값의 type이 무엇인가요? int가 아닌가요? string 값이면 '~ == "1"'로 수정해야죠...

  • MSJs31
    140
    2021-06-10 13:53:56

    @JadeKim char입니다. 

  • MSJs31
    140
    2021-06-10 13:55:42

    "1" 해도안돼구 '1' 도 안돼구 1도 안돼네요;; 

  • JadeKim
    258
    2021-06-10 13:57:23 작성 2021-06-10 13:57:37 수정됨

    @MSJs31

    char는 문자형이니까 다음처럼 수정하면 될 것 같습니다.

    def get_type(df_result_dataframe):
        tmp = ''
        if [df_result_dataframe['gas'] == '1'] :
            tmp += '가스 이상,'
        if [df_result_dataframe['elec'] == '1']:
            tmp += '전기 이상,'
        if [df_result_dataframe['water'] == '1']:
            tmp += '수도 이상,'
        if [df_result_dataframe['channel_tv'] == '1']:
            tmp += '채널 이상,'
        if [df_result_dataframe['remocon_tv'] == '1']:
            tmp += '리모콘 이상,'
        if [df_result_dataframe['motion_ref'] == '1']:
            tmp += '냉장고 움직임 이상,'
        if [df_result_dataframe['door_ref'] == '1']:
            tmp += '냉장고 문 열림 이상,'
        if [df_result_dataframe['totalair_air'] == '1']:
            tmp += '실내공기 이상,'
        if [df_result_dataframe['motion_air'] == '1']:
            tmp += '공기청정기 움직임 이상,'
        if [df_result_dataframe['temp_air'] == '1']:
            tmp += '공기청정기 온도 이상,'
        if [df_result_dataframe['temp_ref'] == '1']:
            tmp += '냉장고 온도 이상,'
        if [df_result_dataframe['hum_air'] == '1']:
            tmp += '공기청정기 습도 이상,'
        if [df_result_dataframe['hum_ref'] == '1']:
            tmp += '냉장고 습도 이상,'
        return tmp[:-1]
    
    df_result_dataframe['event_type'] = df_result_dataframe.apply(get_type, axis=1)


  • MSJs31
    140
    2021-06-10 13:58:51

    그래도 다들어가버려요 ㅠㅠㅠㅠㅠㅠㅠ 이유가 뭔지 모르겠네요;;

  • JadeKim
    258
    2021-06-10 14:05:05

    @MSJs31

    이렇게 한 번 해보시겠습니까?

    def get_type(df_result_dataframe):
        tmp = ''
        if int(df_result_dataframe['gas']) == 1 :
            tmp += '가스 이상,'
        if int(df_result_dataframe['elec']) == 1:
            tmp += '전기 이상,'
        if int(df_result_dataframe['water']) == 1:
            tmp += '수도 이상,'
        if int(df_result_dataframe['channel_tv']) == 1:
            tmp += '채널 이상,'
        if int(df_result_dataframe['remocon_tv']) == 1:
            tmp += '리모콘 이상,'
        if int(df_result_dataframe['motion_ref']) == 1:
            tmp += '냉장고 움직임 이상,'
        if int(df_result_dataframe['door_ref']) == 1:
            tmp += '냉장고 문 열림 이상,'
        if int(df_result_dataframe['totalair_air']) == 1:
            tmp += '실내공기 이상,'
        if int(df_result_dataframe['motion_air']) == 1:
            tmp += '공기청정기 움직임 이상,'
        if int(df_result_dataframe['temp_air']) == 1:
            tmp += '공기청정기 온도 이상,'
        if int(df_result_dataframe['temp_ref']) == 1:
            tmp += '냉장고 온도 이상,'
        if int(df_result_dataframe['hum_air']) == 1:
            tmp += '공기청정기 습도 이상,'
        if int(df_result_dataframe['hum_ref']) == 1:
            tmp += '냉장고 습도 이상,'
        return tmp[:-1]
    
    df_result_dataframe['event_type'] = df_result_dataframe.apply(get_type, axis=1)


  • JadeKim
    258
    2021-06-10 14:09:20

    이전에 if 문 조건부에 대괄호([])로 묶어놓으셨네요 대괄호로 묶어놓으시면 [True], [False]와 같은 리스트 값이 나오게 되는데 이것은 리스트 안에 값이 들어있다는 의미가 됩니다. 따라서 무조건 True값이 나오기 때문에 계속 다 같이 나온 것 같네요

  • MSJs31
    140
    2021-06-10 14:23:59

    위에껄로 진행씨 다음과 같은 오류가 발생합니다.ㅠㅠㅠ

  • MSJs31
    140
    2021-06-10 14:28:22


    def get_type(df_result_dataframe):
        tmp = ''
        if (df_result_dataframe['gas']) == '1' :
            tmp += '가스 이상,'
        if (df_result_dataframe['elec']) == '1':
            tmp += '전기 이상,'
        if (df_result_dataframe['water']) == '1':
            tmp += '수도 이상,'
        if (df_result_dataframe['channel_tv']) == '1':
            tmp += '채널 이상,'
        if (df_result_dataframe['remocon_tv']) == '1':
            tmp += '리모콘 이상,'
        if (df_result_dataframe['motion_ref']) == '1':
            tmp += '냉장고 움직임 이상,'
        if (df_result_dataframe['door_ref']) == '1':
            tmp += '냉장고 문 열림 이상,'
        if (df_result_dataframe['totalair_air']) == '1':
            tmp += '실내공기 이상,'
        if (df_result_dataframe['motion_air']) == '1':
            tmp += '공기청정기 움직임 이상,'
        if (df_result_dataframe['temp_air']) == '1':
            tmp += '공기청정기 온도 이상,'
        if (df_result_dataframe['temp_ref']) == '1':
            tmp += '냉장고 온도 이상,'
        if (df_result_dataframe['hum_air']) == '1':
            tmp += '공기청정기 습도 이상,'
        if (df_result_dataframe['hum_ref']) == '1':
            tmp += '냉장고 습도 이상,'
        return tmp[:-1]
    
    df_result_dataframe['event_type'] = df_result_dataframe.apply(get_type, axis=1)

    일케하니깐 되내요.

  • JadeKim
    258
    2021-06-10 14:29:47
    def get_type(df_result_dataframe):
        tmp = ''
        if df_result_dataframe['gas'] == '1' :
            tmp += '가스 이상,'
        if df_result_dataframe['elec'] == '1':
            tmp += '전기 이상,'
        if df_result_dataframe['water'] == '1':
            tmp += '수도 이상,'
        if df_result_dataframe['channel_tv'] == '1':
            tmp += '채널 이상,'
        if df_result_dataframe['remocon_tv'] == '1':
            tmp += '리모콘 이상,'
        if df_result_dataframe['motion_ref'] == '1':
            tmp += '냉장고 움직임 이상,'
        if df_result_dataframe['door_ref'] == '1':
            tmp += '냉장고 문 열림 이상,'
        if df_result_dataframe['totalair_air'] == '1':
            tmp += '실내공기 이상,'
        if df_result_dataframe['motion_air'] == '1':
            tmp += '공기청정기 움직임 이상,'
        if df_result_dataframe['temp_air'] == '1':
            tmp += '공기청정기 온도 이상,'
        if df_result_dataframe['temp_ref'] == '1':
            tmp += '냉장고 온도 이상,'
        if df_result_dataframe['hum_air'] == '1':
            tmp += '공기청정기 습도 이상,'
        if df_result_dataframe['hum_ref'] == '1':
            tmp += '냉장고 습도 이상,'
        return tmp[:-1]
    
    df_result_dataframe['event_type'] = df_result_dataframe.apply(get_type, axis=1)

    위처럼 조건문에 붙은 대괄호를 없애고 해보셨나요?

  • MSJs31
    140
    2021-06-10 14:30:51

    대괄호 없에고 소괄호로 데이터프레임은 1,2,3,...인식 되는것 같습니다.  

  • JadeKim
    258
    2021-06-10 14:33:31

    @MSJs31

    소괄호도 없애는 것이 좋을 것 같습니다. 왜냐면 튜플형으로 인식될 가능성이 있을 수 있기 때문이에요.

  • MSJs31
    140
    2021-06-10 14:40:05 작성 2021-06-10 14:40:36 수정됨

    한가지 질문있또있는데요 위에꺼는 다음과같은 오류가 발생하고

    밑에꺼는 발생안하는데 왜그런거에요??;; 대괄호는 True False만 된다고 하셨는데..뭐가다른건지 잘모르겠어요 소괄호 없애도 되긴돼요.. 뭐가 다른지 잘 이해가안갑니다... 그럼 지금 문제가 있는 if문에서도 True False로 인식한다는건가용?

  • JadeKim
    258
    2021-06-10 14:53:39

    @MSJs31

    위에꺼라고 하심은 (iot_clean_air['pm25_air'] < 50) | (iot_clean_air['totalclean_air'] <= 1) 를 말씀하시는 건가요?

    조건문을 대괄호 안에 넣었을 때를 다시 설명해드릴게요. 예를 들어서 [1 == 0]이라고 해봅시다. 그러면 1은 0이 아니니까 [False]겠죠?? 그리고 [False]는 리스트 안에 False라는 값이 들어갔다고 볼 수 있습니다. 그러니까 리스트 안에 값이 들어간 것은 무조건 True로 본다는 겁니다.

    예를 들어 if [False]: print("hello") 라고 하면 hello라고 출력될 것이고 if [None]: print("hello")라고 해도 hello라고 출력됩니다.

  • JadeKim
    258
    2021-06-10 15:18:20

    @MSJs31

    1. 오류가 일어난 이유

    위에서 "the truth value of a dataframe is ambiguous. use a.empty a.bool() a.item() a.any() or a.all()" 오류가 난 이유는 아마 "iot_clean_air['pm25_air']"가 시리즈형이어서 그럴 것 같습니다.

    Series와 int형을 비교하게되면 정확한 값을 판단할 수 없기때문에 오류가 발생합니다.

    Series의 값들이 어떻게 되어있는지 확인해야 알 것 같지만.....

    iot_clean_air['pm25_air'].item() < 50) | (iot_clean_air['totalclean_air'].item() <= 1 으로 수정해 볼 수 있을 것 같네요.

    .item()은 시리즈의 첫 번째 항목을 가져오는 것입니다.

    2. 대괄호 안에 조건문을 넣었을 때 무조건 True

    위에서 설명했듯이 []안에 값이 잇는 이상 무조건 True입니다.

  • MSJs31
    140
    2021-06-11 10:02:33


    이와같은 오류는 어떻게 처리를 해야하나용?

  • JadeKim
    258
    2021-06-11 10:40:05

    @MSJs31

    죄송하지만, 대부분 오류만보고 알아낼 수 있는 것은 별로 없습니다. df_iot_dataframe['event_out'] 값이 어떻게 구성되어있는지를 알아야할 것 같네요.

    추측이지만 df_iot_dataframe['event_out'] 값이 없으면 .item()으로 가져올 값이 없으므로 오류가 생겼을거라고 생각되네요.

    암튼 값이 어떻게 구성되어있는지 확인해야 알 수 있을 것 같습니다.

  • MSJs31
    140
    2021-06-11 11:19:07

    없으면 fillna(0)으로 채워 숫자가 char가 0으로 들어갑니다..

  • JadeKim
    258
    2021-06-11 11:54:36 작성 2021-06-11 11:56:31 수정됨

    @MSJs31

    제가 위에도 말했지만 데이터가 어떻게 구성되어있는지 알아야 정확히 어떤 것이 문제인지 알 수 있습니다. 아니면 계속 추측만하면서 때려 맞출 수 밖에 없는데 그렇게 해야되는 이유를 모르겠네요

  • MSJs31
    140
    2021-06-11 12:09:10


    다음과 같은 데이터들입니다. event_out은 0,1로 들어오는 데이터프레임을 병합해서 판단 하는 알고리즘을 짜고 있습니다.  

  • JadeKim
    258
    2021-06-11 12:18:07

    @MSJs31

    죄송하지만 제가 이해가 안가는 부분이 "event_out은 0,1로 들어오는 데이터프레임을 병합해서 판단 하는 알고리즘"에서 0, 1로 들어오는 데이터프레임을 병합한다는 것이 무슨 뜻인지 모르겠네요...

    그리고 올려주신 데이터는  "event_out" 칼럼이 생기기 전 데이터인가요??


  • MSJs31
    140
    2021-06-11 13:04:06


    이렇게 데이터프레임을 병합하고 판단하는 알고리즘입니당. 

  • JadeKim
    258
    2021-06-11 13:12:19

    @MSJs31

    if df_iot_dataframe['event_out'] == "0": 이라고 수정해도 될 것 같은데 해보셨나요??

  • MSJs31
    140
    2021-06-11 13:13:59

    또 이렇게 뜨네용.

  • MSJs31
    140
    2021-06-11 13:16:30

    변수에 할당해서 하는게 가장 좋은거일지..흠..

  • MSJs31
    140
    2021-06-11 13:27:30


    if home_cam_dataframe.empty != True: 
        if df_iot_dataframe['detect_dog'] == '1':
            df_iot_dataframe['motions_air'] == None
            df_iot_dataframe['motions_ref'] == None
        if df_iot_dataframe['detect_cat'] == '1':
            df_iot_dataframe['motions_air'] == None
            df_iot_dataframe['motions_ref'] == None
        if df_iot_dataframe['headcount'] > '2':
            df_iot_dataframe['motions_air'] == None
            df_iot_dataframe['motions_ref'] == None

    어후 돌아버리겠네요;;ㅠㅠ

  • JadeKim
    258
    2021-06-11 13:29:55

    @MSJs31

    ValueError: can only convert an array of size 1 to a python scalar

    위 오류는 df_iot_dataframe['event_out'] 값의 길이가 1이 아닐 경우 나타납니다. 그렇다면 값들 중에 공백이 포함되어있다던가 아니면 0, 1 값 말고 다른 값이 들어가 있을 수 있을 것 같기도 하고...


    df_iot_dataframe['event_out'] = pd.to_numeric(df_iot_dataframe['event_out'], errors = 'coerce' )를 작성하시고 그 다음 fillna(0)을 실행해보세요. 그 다음 if df_iot_dataframe['event_out'] == 0: 으로 돌려보시겠어요?


  • MSJs31
    140
    2021-06-11 13:33:29

    그렇게 진행하구 if문 돌렸더니 Truth Value가 또떠버리네용;

  • JadeKim
    258
    2021-06-11 13:41:35

    @MSJs31

    아... 제가 잘못 생각하고 있었던 같네요.. df_iot_dataframe['event_out']는 하나의 값이 아니니까... 저렇게 조건문을 주시면 안되겠네요...

    df_iot_dataframe['event_out'].item()이라고 하면 오류가 나오는 것이 당연하네요...


    df_iot_dataframe['event_out'] 각 행의 값을 지정해서 하나씩 비교하거나 apply 또는 map을 사용하셔야합니다.




  • MSJs31
    140
    2021-06-11 13:43:55

    apply map음.... 이게 계속 데이터가 들어오는거라 apply map 사용이 좋을 것 같네요...음..그러면..


  • MSJs31
    140
    2021-06-11 13:48:18


    if df_iot_dataframe.apply(lambda x : x['event_out'] 
    
                                   if x['event_out'] == 1 
    
                                        for i in range(l):
    
                                            row = df_iot_dataframe.iloc[i]
    
                                            insert_qry =  f"""
    
                                            insert into tbl_iot_score( device_id, home_code,mdate,channel_tv_score,remotecon_tv_score,motions_ref_score,door_ref_score,motions_air_score )
    
                                            values
    
                                            ('{row['device_id']}' , 
    
                                             '{row['home_code']}' , 
    
                                             NOW(),
    
                                            '{row['channel_tv_score']}', 
    
                                            '{row['remotecon_tv_score']}', 
    
                                            '{row['motions_ref_score']}',
    
                                            '{row['door_ref_score']}',
    
                                            '{row['motions_air_score']}'
    
                                            )
    
                                            ON DUPLICATE KEY UPDATE
    
                                            device_id ='{row['device_id']}' , 
    
                                            home_code =  '{row['home_code']}' , 
    
                                            mdate = NOW(),
    
                                            channel_tv_score = '{row['channel_tv_score']}', 
    
                                            remotecon_tv_score = '{row['remotecon_tv_score']}',
    
                                            motions_ref_score = '{row['motions_ref_score']}',
    
                                            door_ref_score = '{row['door_ref_score']}',
    
                                            motions_air_score = '{row['motions_air_score']}'
    
                                            """
    
                                            cursor.execute(insert_qry)
    
                                            conn.commit()
    
                                else (0), axis = 1)
    
        l = len(df_iot_dataframe) 
    
        

    음...너무 어렵네요;; 헷갈리고 어떻게 쓰는지를 잘모르겠네요;

  • JadeKim
    258
    2021-06-11 14:22:58

    @MSJs31

    아 그런 코드라면 이렇게 해도 되지않을까요?? 처음부터 코드를 알려주시지...

    rows = len(df_iot_dataframe)
    for i in range(rows):
        cur_row = df_iot_dataframe.iloc[i]
        if cur_row["event_out"] == 1:
            insert_qry =  f"""
                        insert into tbl_iot_score( device_id, home_code,mdate,channel_tv_score,remotecon_tv_score,motions_ref_score,door_ref_score,motions_air_score )
                        values
                        ('{row['device_id']}' , 
                        '{row['home_code']}' , 
                        NOW(),
                        '{row['channel_tv_score']}', 
                        '{row['remotecon_tv_score']}', 
                        '{row['motions_ref_score']}',
                        '{row['door_ref_score']}',
                        '{row['motions_air_score']}'
                        )
                        ON DUPLICATE KEY UPDATE
                        device_id ='{row['device_id']}' , 
                        home_code =  '{row['home_code']}' , 
                        mdate = NOW(),
                        channel_tv_score = '{row['channel_tv_score']}', 
                        remotecon_tv_score = '{row['remotecon_tv_score']}',
                        motions_ref_score = '{row['motions_ref_score']}',
                        door_ref_score = '{row['door_ref_score']}',
                        motions_air_score = '{row['motions_air_score']}'
                        """
            cursor.execute(insert_qry)
            conn.commit()


  • MSJs31
    140
    2021-06-11 14:29:12 작성 2021-06-11 14:29:56 수정됨


    if home_cam_dataframe.empty != True: 
    
        if [((df_iot_dataframe['detect_dog']) == 1 | (df_iot_dataframe['detect_cat']) == 1 | (df_iot_dataframe['headcount']) > 1)]:
    
            df_iot_dataframe['motions_air'] == None
    
    if home_cam_dataframe.empty != True: 
    
        if (df_iot_dataframe['detect_dog']) == '1' | (df_iot_dataframe['detect_cat']) == '1' | (df_iot_dataframe['headcount']) > '1':
    
            df_iot_dataframe['motions_ref'] == None
    
    
    
    df_iot_dataframe
    
    
    



    cannot compare a dtyped [object] array with a scalar of type [bool] 자꾸 이에러뜨네요
  • JadeKim
    258
    2021-06-11 14:31:44

    df_iot_dataframe['detect_dog'] 와 df_iot_dataframe['detect_cat']을 print()로 출력해보세요.

  • MSJs31
    140
    2021-06-11 14:38:23

    요렇게 나옵니다

  • JadeKim
    258
    2021-06-11 14:41:33

    그리고 이제 "((df_iot_dataframe['detect_dog']) == 1 | (df_iot_dataframe['detect_cat']) == 1 | (df_iot_dataframe['headcount']) > 1)]"를 봐보세요....

    저 출력 값이랑 1이랑 비교가 가능한가요??

    지금 같은 문제에서 맴도시는 것 같은데 df_iot_dataframe[<칼럼명>]은 하나의 열을 가져온다는 겁니다. 근데 하나의 열과 1을 비교한다는 것이 말이 안되지요.

  • MSJs31
    140
    2021-06-11 14:44:34

    음...... 그렇군요... for문으로 비교를 해야겠네요;

  • MSJs31
    140
    2021-06-11 14:51:16


    if home_cam_dataframe.empty != True: 
        rows = len(df_iot_dataframe)
        for i in range(rows):
            detect_row = df_iot_dataframe.iloc[i]
            if int(detect_row['detect_dog']) == 1 | int(detect_row['detect_cat']) == 1 | int(detect_row['headcount']) > 1:
                    df_iot_dataframe['motions_air'] == None

    이게답이네요 ㅎㅎ




  • 로그인을 하시면 답변을 등록할 수 있습니다.