簡體   English   中英

根據 Python 中另一個變量的值創建一個變量

[英]Creating a variable conditional to the value of another variable in Python

我正在嘗試生成變量,該變量的值取決於另一個變量的值。 我的數據集是urban_classification ,我正在嘗試根據變量URBRUR的值創建變量prc_urbain 這是我的代碼:

if urban_classification.prc_urbain>0.5 :
    urban_classification['URBRUR'] = "urban"
else:
    urban_classification['URBRUR'] = "rural"

我收到此錯誤消息:

    Traceback (most recent call last):
  File "C:\Users\Utilisateur\AppData\Roaming\Python\Python37\site-packages\IPython\core\interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-3-a94aadb86c32>", line 31, in <module>
    if urban_classification.prc_urbain>0.5 :
  File "C:\Users\Utilisateur\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\generic.py", line 1555, in __nonzero__
    self.__class__.__name__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

你能指出我做錯了什么嗎?

謝謝!

錯誤信息:

Series 的真值是模棱兩可的。

來自

if urban_classification.prc_urbain>0.5 :

因為urban_classification.prc_urbain是一個 pd.Series,因此urban_classification.prc_urbain>0.5也是一個由 True/False 值組成的 pd.Series,並且 python 無法確定此布爾值列表是否應評估為 True。

要實現您想要的,您可以使用pd.cut

urban_classification["URBRUR"] = pd.cut(urban_classification.prc_urbain, [0, 0.5, 1], labels=["rural", "urban], include_lowest=True)

例子:

import pandas as pd                                                     
s = pd.Series([0, 0.1, 0.45, 0.6, 0.8, 1])                              
pd.cut(s, [0, 0.5, 1], labels=("rural", "urban"), include_lowest=True)                       


0    rural
1    rural
2    rural
3    urban
4    urban
5    urban

您的變量urban_classification.prc_urbain不是可以直接與0.5比較的數字,而是pandas.Series object (基本上是一維數組)。

您看到的錯誤要求您更具體:您是否希望數組中的所有值都為>0.5 ,其中任何特定的值,等等...

如果您認為數組僅由一個元素組成,您只需將 append [0]到 object 系列,例如:

if urban_classification.prc_urbain[0] > 0.5:
    urban_classification['URBRUR'] = "urban"
else:
    urban_classification['URBRUR'] = "rural"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM