【问题标题】:Function return empty dataframe函数返回空数据框
【发布时间】:2018-04-26 16:59:31
【问题描述】:

我想创建一个循环来创建一个数据框,该数据框收集输入数据框的线条,这些线条具有共同点。 我的问题:当我应用函数时,输出数据框是空的...... 然而在循环中打印(输出),我们看到程序可以工作..我不明白,我试图改变返回位置,但那不起作用

提前感谢您的帮助!

def group (dataframe, identifiant, output):
    for i in range(len(identifiant)):
        ident = identifiant.loc[i,"IDCTV"]
        # print(ident)


        for j in range(len(dataframe)):
            if dataframe.loc[j,"IDCONTREVENANT"] == ident:
                di = dataframe.loc[j, "DATE_INFRACTION"]
                nt = dataframe.loc[j,"NOTRAIN"]
                genre = dataframe.loc[j,"CODEETATCIVIL"]
                age = dataframe.loc[j,"AGE"]
                # print(di, nt, genre, age)

            for k in range(len(dataframe)):
                if k != j :
                    if dataframe.loc[k,"DATE_INFRACTION"] == di and dataframe.loc[k,"NOTRAIN"] == nt:
                        idgroup = dataframe.loc[k,"IDCONTREVENANT"]
                        genreidgroup = dataframe.loc[k,"CODEETATCIVIL"]
                        ageidgroup = dataframe.loc[k,"AGE"]
                        output = output.append({ "IDREF" : ident ,"CODEETATCIVILREF" : genre,"AGEREF" : age ,"IDCTV" : idgroup,"CODEETATCIVILCTV" : genreidgroup,"AGECTV" : ageidgroup}, ignore_index = True)
                        print(output)
    return output

group(df,IDCTV,df_groups)

print(df_groups) 

【问题讨论】:

  • 是不是和你的代码一模一样?因为您需要缩进 def 行以下的所有内容。
  • 感谢回答是的,就是这样,我不能缩进 def 行以下的所有内容,因为我的循环在循环中
  • 为什么这会阻止你缩进它? Python 要求您缩进函数中的行。
  • 何对不起,你是对的,不,我的代码不是这样的,我在 def 下面有缩进,没有问题。
  • 因此,我不知道是什么问题......

标签: python pandas dataframe return append


【解决方案1】:

我想你想改变

group(df,IDCTV,df_groups)

df_groups = group(df,IDCTV,df_groups)

现在您正在调用group 函数并进行所有计算,但您没有将输出保存在任何地方。因此,当您运行 print(df_groups) 时,它会打印出您调用该函数之前的任何内容。

【讨论】:

  • 非常感谢,对于这个开始的错误,我们深表歉意。
猜你喜欢
  • 1970-01-01
  • 2019-02-04
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 2021-08-23
  • 2021-10-20
  • 1970-01-01
相关资源
最近更新 更多