[英]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.