【问题标题】:Error: The truth value of a Series is ambiguous错误:Series 的真值不明确
【发布时间】:2021-03-29 19:36:49
【问题描述】:

我正在尝试使用以下代码生成新列

list = ['LHR','-1','-3','LGW','MAD','SIN','KUL','JFK','HKG','PVG','IST','SDA','GLA']
for i in list:
    if plotdata.loc[plotdata['LOCATION'] == i] :
        plotdata['city'] = plotdata['LOCATION']
    else:
        plotdata['city'] = 'others'

我收到以下错误:

ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

数据类型是类别,请问为什么会出现这个错误?

【问题讨论】:

    标签: python pandas dataframe series


    【解决方案1】:

    不知道为什么您会收到此错误。但是,最好不要循环遍历 pandas。

    您可以通过将“城市”设置为“位置”的任何内容来避免该错误,然后如果它不在列表中,则恢复为“其他”。

    city_list = ['LHR','-1','-3','LGW','MAD','SIN','KUL','JFK','HKG','PVG','IST','SDA','GLA']
    plotdata['city'] = plotdata['LOCATION']
    plotdata.loc[~plotdata['city'].isin(city_list), 'city'] = 'other'
    

    【讨论】:

      【解决方案2】:

      您收到此错误是因为以下代码:

      if plotdata.loc[plotdata['LOCATION'] == i]
      

      正在测试.loc() 返回的数据帧plotdata 的子集,这又是因为布尔掩码:

      plotdata['LOCATION'] == i
      

      返回一个布尔数组。

      总体而言,由于.loc() 返回数据帧的子集,因此消息:

      ValueError:DataFrame 的真值不明确。

      【讨论】:

        猜你喜欢
        • 2017-03-27
        • 2023-01-08
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 1970-01-01
        • 2020-10-15
        • 2019-12-19
        • 2014-10-28
        相关资源
        最近更新 更多