首页 > 解决方案 > 比较在熊猫数据框中返回不正确的结果

问题描述

在比较“ibeaconUuid”和“rawData”的列时,非零列应返回为“payload”列。

ip_dict = {'ibeaconUuid': ['0', 'E245F67', '0', '0'],
           'rawData': ['5F67E24',0,'5F67E24',0],
           'mac': ['A', 'B', 'C' , 'D']} 
ip_df = pd.DataFrame(ip_dict)
ip_df['payload_data'] = ip_df.apply(lambda x : x['ibeaconUuid'] if 
                        x['ibeaconUuid'] != 0  else x['rawData'] if 
                        x['rawData'] != 0 else 0, axis=1)

上面的表达式返回为,

    ibeaconUuid  rawData mac payload_data
  0           0  5F67E24   A            0
  1     E245F67        0   B      E245F67
  2           0  5F67E24   C            0
  3           0        0   D            0

而我要求的结果是,

    ibeaconUuid  rawData mac payload_data
  0           0  5F67E24   A      5F67E24      
  1     E245F67        0   B      E245F67
  2           0  5F67E24   C      5F67E24
  3           0        0   D            0

标签: python-3.xpandasapply

解决方案


推荐阅读