使用 if else 在 Jupyter 中创建海运图时出错

我试图用 seaborn 在 python 中为日期列创建一个图表。我收到以下错误消息。你知道如何解决它吗?

----> 4 如果 df['MS_Date']=="s.xii" 或 df['MS_Date']=="s.xii(1)" 或 df['MS_Date']=="s.xii (2)" 或 df['MS_Date']=="s.xii(in)" 或 df['MS_Date']=="s.xii(ex)" 或 df['MS_Date']=="s. xii(med)": 5 df['MS_Date']== "12th century" 6 如果 df['MS_Date']=="s.xii/xiii" 或 df['MS_Date']=="s.xii/十三”:

~\anaconda\lib\site-packages\pandas\core\generic.py in nonzero (self) 1477 1478 模棱两可的,我们的意思是它匹配输入的水平 -> 1479 axis和另一个轴的标签。1480 1481 参数

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

代码:

if df['MS_Date']=="s.xii" or df['MS_Date']=="s.xii(1)" or df['MS_Date']=="s.xii(2)" or df['MS_Date']=="s.xii(in)" or df['MS_Date']=="s.xii(ex)" or df['MS_Date']=="s.xii(med)": 

        df['MS_Date']== "12th century"

if df['MS_Date']=="s.xii/xiii" or df['MS_Date']=="s.xii/xiii":

    df['MS_Date']=="12 & 13 century"

if df['MS_Date']=="s.xiii" or df['MS_Date']=="s.xiii(1)" or df['MS_Date']=="s.xiii(2)" or df['MS_Date']=="s.xiii(in)" or df['MS_Date']=="s.xiii(ex)" or df['MS_Date']=="s.xiii(med)":

    df['MS_Date']=="13 century"

if df['MS_Date']=="s.xiii/s.xiv" or df['MS_Date']=="s.xiii/xiv":

    df['MS_Date']=="13 & 14 century"

if df['MS_Date']=="s.xiii/s.xv":

    df['MS_Date']=="13 & 15 century"

if  df['MS_Date']=="s.xiv" or df['MS_Date']=="s.xiv(1)" or df['MS_Date']=="s.xiv(2)" or df['MS_Date']=="s.xiv(in)" or df['MS_Date']=="s.xiv(ex)"  or df['MS_Date']=="s.xiv(med)": 

    df['MS_Date']=="14th century"

if  df['MS_Date']=="s.xiv/xv":

    df['MS_Date']== "14 & 15 century"

if df['MS_Date']=="s.xv" or df['MS_Date']=="s.xv(1)" or df['MS_Date']=="s.xv(2)" or df['MS_Date']=="s.xv(in)" or df['MS_Date']=="s.xv(ex)" or df['MS_Date']=="s.xv(med)" :

    df['MS_Date']=="15th century"

if  df['MS_Date']=="s.xv/xvi":

    df['MS_Date']== "15 & 16 century"

if df['MS_Date']=="xvi" or df['MS_Date']=="s.xvi(in)":

    df['MS_Date']== "16 century"

else:

    df['MS_Date']=="unknown"


一只斗牛犬
浏览 119回答 1
1回答

白猪掌柜的

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().此错误意味着您正在获取一系列布尔值而不是单个布尔值。对于使用 if 和 alse 你需要一个单一的True/False值,但在这里通过使用你会得到一个系列,它会根据它们满足的标准df['MS_Date']=="s.xii"为你提供所有位置。True/False样品 df:&nbsp; &nbsp; Player&nbsp; &nbsp; &nbsp; Position&nbsp; &nbsp; color0&nbsp; &nbsp;Pele&nbsp; &nbsp; &nbsp; &nbsp; Forward&nbsp; &nbsp; &nbsp;black1&nbsp; &nbsp;Platini&nbsp; &nbsp; &nbsp;Midfielder&nbsp; white2&nbsp; &nbsp;Beckenbauer Defender&nbsp; &nbsp; red如果我想根据某些条件更改颜色列的值,那么我将这样写而不是使用 if 和 else:df.loc[(df['Player']=='Pele') | (df['Position']=='Forward'), 'color'] = 'white'或者你可以这样写numpy.where:np.where(<condition>, <value1 if true>, <value2 if false>)&nbsp;df['color'] = np.where((df['Player']=='Pele') | (df['Position']=='Forward'), 'black', df.color)为了使其简洁明了,np.select请在此处查看如何使用: https://stackoverflow.com/a/60244752/6660373也==可以使用而不是使用eq我将使用 loc 来获取我的条件成立的位置。在那个位置上,我将选择一个要更改的列。df.loc[<conditions>, <column to assign>] = <value>像这样使用:df.loc[(df['MS_Date']=="s.xii") | (df['MS_Date']=="s.xii(1)") | (df['MS_Date']=="s.xii(2)") | (df['MS_Date']=="s.xii(in)") | (df['MS_Date']=="s.xii(ex)") | (df['MS_Date']=="s.xii(med)"), 'MS_Date']= "12th century"df.loc[(df['MS_Date']=="s.xii/xiii") | (df['MS_Date']=="s.xii/xiii"), 'MS_Date']="12 & 13 century"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python