Python函数只返回列数据的第一个值

Python函数只返回列数据的第一个值,python,function,csv,Python,Function,Csv,我有一个从文件中读取学校名称的函数,但它只返回第一个学校名称。 我该怎么做才能让它返回所有的名字,但是如果我使用打印(sch),它会打印所有的名字。谢谢 def school(): schools_from_csv = pd.read_csv("School_data.csv", engine='python') cht = school_from_csv.school_name.str.strip() for sch in cht: return sch

我有一个从文件中读取学校名称的函数,但它只返回第一个学校名称。 我该怎么做才能让它返回所有的名字,但是如果我使用打印(sch),它会打印所有的名字。谢谢

def school():
    schools_from_csv = pd.read_csv("School_data.csv", engine='python')
    cht = school_from_csv.school_name.str.strip()
    for sch in cht:
        return sch
        #prints(sch)

    return None

college=school()

由于使用了return,循环在cht中找到第一个元素时将终止

要获取整个列表,您可以直接返回cht

def school():
    schools_from_csv = pd.read_csv("School_data.csv", engine='python')
    cht = school_from_csv.school_name.str.strip()
    return cht

college=school()
或者,如果希望函数逐个生成值,可以使用生成器并将for循环更改为

for sch in cht:
     yield sch
您可以阅读有关生成器的更多信息。

如果将
返回
替换为
收益

def school():
    schools_from_csv = pd.read_csv("School_data.csv", engine='python')
    for sch in schools_from_csv:
        yield sch.school_name.str.strip()

    return None

college = school()
for col in college:
    print(col)
或返回
for
循环后的列表

def school():
    schools = []
    schools_from_csv = pd.read_csv("School_data.csv", engine='python')
    for sch in schools_from_csv:
        schools.append(sch.school_name.str.strip())

    return schools

您似乎还想从csv(而非cht)循环访问
schools(学校)
,而不是
cht
。@ChrisDoyle共享的此代码解决了我的问题:

def school():
    schools_from_csv = pd.read_csv("School_data.csv", engine='python')
    cht=schools_from_csv.school_name.str.strip().tolist()
    return cht 

school()

你有什么环?创建后只需返回
cht
。所有名称都已在cht中,因此只需返回即可。感谢您的快速响应。我还注意到。实际上,我正在将参数返回到另一个函数,我怎样才能使它继续循环到末尾呢?在
cht
上循环并将项目附加到
schu list
上有什么意义。为什么不直接返回
cht
您可以将每个元素添加到一个新列表中,并在末尾返回列表,就像我所做的那样。@banji结尾的“继续循环”是什么意思?@ChrisDoyle是的。我已经改变了。您可以使用generator循环并一次获取一个值。
list(cht)
是否会创建与您在
schools
中创建的列表相同的列表?@Aryerez是,假设循环中不需要更多操作。我遇到错误“generator object Entity_name at 0x10847230”,我想使用“schools_from”中的“school_name”列进行循环_csv@banji你从哪儿弄来的?