在Python中创建一个与另一个变量的值有条件的变量
我试图生成一个变量,它的值取决于另一个变量的值。我的数据集是在Python中创建一个与另一个变量的值有条件的变量,python,pandas,Python,Pandas,我试图生成一个变量,它的值取决于另一个变量的值。我的数据集是urban\u classification,我正在尝试根据变量prc\u urban的值创建变量URBRUR。这是我的代码: if urban_classification.prc_urbain>0.5 : urban_classification['URBRUR'] = "urban" else: urban_classification['URBRUR'] = "rural" 我得到这个错误信息:
urban\u classification
,我正在尝试根据变量prc\u urban
的值创建变量URBRUR
。这是我的代码:
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().
回溯(最近一次呼叫最后一次):
运行代码第3326行的文件“C:\Users\usilisateur\AppData\Roaming\Python37\site packages\IPython\core\interactiveshell.py”
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第31行,在
如果中国城市分类>0.5:
文件“C:\Users\usilisateur\AppData\Local\Programs\Python\37\lib\site packages\pandas\core\generic.py”,第1555行,非零__
self.\u类\u.\u名称__
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
你能告诉我我做错了什么吗
谢谢 错误消息:
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().
级数的真值是模糊的
来自
if urban_classification.prc_urbain>0.5 :
因为urban\u classification.prc\u urbain
是一个pd.序列,因此urban\u classification.prc\u urbain>0.5
也是一个由真/假值组成的pd.序列,python无法确定此布尔值列表的计算结果是否为真
要实现您的目标,您可以使用:
例如:
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\u classification.prc\u urban
不是一个可以直接与0.5
进行比较的数字,而是一个pandas.Series
对象(基本上是一个一维数组)
您看到的错误要求您更加具体:是否希望数组中的所有值都是>0.5
,其中任何一个值都是特定的,等等
如果您认为数组仅由一个元素组成,则只需将[0]
附加到序列对象,例如:
if urban\u classification.prc\u urban[0]>0.5:
城市分类['URBRUR']=“城市”
其他:
城市分类['URBRUR']=“农村”