在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']=“农村”