Python 函数值错误中的函数

Python 函数值错误中的函数,python,pandas,Python,Pandas,我正在尝试创建一个函数来帮助我创建GeoJSON文件。我正在尝试根据用户性别和活动状态设置颜色属性。到目前为止我创建的函数: import os import pandas as pd import numpy as np def create_geojson(df): def colour_func(): if (df["Status"] == "Inactive"): #line 167

我正在尝试创建一个函数来帮助我创建GeoJSON文件。我正在尝试根据用户性别和活动状态设置颜色属性。到目前为止我创建的函数:

import os
import pandas as pd
import numpy as np

def create_geojson(df): 

    def colour_func():
        if (df["Status"] == "Inactive"):                            #line 167
            return "#808080"
        elif (df["Status"] == "Active" and df["Gender"] == "Male"):
            return "#0000FF"
        else:
            return "#FF99FF"

    z = len(df)
    output = "C:\\Users\\Lukasz Obara\\Desktop\\Members.txt"
    f = open(output, "w")
    f.write('var Members = {\n\t' +
            '"type": "FeatureCollection",\n\t' +
            '"features": [')

    for x in range(0, z-1): 
        if (isinstance(df["Addr-Formatted"][x], str)):

            f.write('{\n\t\t"type": "Feature",\n\t\t' +
                '"geometry": {\n\t\t\t' +
                    '"type": "Point",\n\t\t\t' + 
                    '"coordinates": [%f, %f] \n\t\t' % (df["Lng"][x], 
                                                        df["Lat"][x]) +
                    '}, \n\t\t' +
                '"properties": {\n\t\t\t' +
                    '"Name": "%s, %s",\n\t\t\t' % (df['Member Name-First'][x],  
                                                   df['Member Name-Last'][x]) + 
                    '"Colour": "%s" \n\t\t' % colour_func() +
                "}\n\t" +                                        #line 205
            "}, ")

    f.close()
    os.rename(output, "C:\\Users\\Lukasz Obara\\Desktop\\Members.geojson")
我认为
color\u func()
应该是空的,因为它只是从
create\u geojson
使用
df
返回适当的颜色(灰色、蓝色、粉色),但我一直得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Lukasz Obara\desktop\Test.py", line 205, in create_geojson
    "}\n\t"+
  File "C:\Users\Lukasz Obara\desktop\Test.py", line 167, in colour_func
    if (df["Status"] == "Inactive"):
  File "C:\Users\Lukasz Obara\Anaconda3\lib\site-packages\pandas\core\generic.py", line 887, in __nonzero__
    .format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\Lukasz Obara\desktop\Test.py”,第205行,在create\u geojson中
“}\n\t”+
文件“C:\Users\Lukasz Obara\desktop\Test.py”,第167行,彩色
如果(df[“状态”]=“非活动”):
文件“C:\Users\Lukasz-Obara\Anaconda3\lib\site-packages\pandas\core\generic.py”,第887行,非零__
.format(self.\uuuuuu class.\uuuuuuu.\uuuuuu name.\uuuuuuuuu))
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

使用
&
组合两个布尔序列,而不是
。您还需要在
()
中对比较进行分组

因此,改变:

elif (df["Status"] == "Active" and df["Gender"] == "Male"):
进入:

编辑

追踪有帮助。您需要指定索引:

def colour_func(ind):
    if df.loc[ind, "Status"] == "Inactive":
        return "#808080"
    elif df.loc[ind, "Status"] == "Active" and df.loc[ind, "Gender"] == "Male":
        return "#0000FF"
    else:
        return "#FF99FF"
然后使用索引
z
调用函数:

'"Colour": "%s" \n\t\t' % colour_func(z) +

我尝试了更改,但
ValueError
仍然存在。请显示完整的回溯,包括行号。还要在代码中标识这一行。否则,就无法找出这个错误到底发生在哪里。我已经包含了完整的错误。我在没有嵌套的
color\u func()
的情况下测试了该函数,并且没有生成任何错误。
'"Colour": "%s" \n\t\t' % colour_func(z) +