【问题标题】:Apply a function in a dataframe's columns [Python]在数据框的列中应用函数 [Python]
【发布时间】:2018-07-31 21:36:03
【问题描述】:

我刚刚编写了这个函数来根据 Python DataFrame 中的两列计算年龄的人。不幸的是,如果使用return,该函数会为所有行返回相同的值,但如果我使用print 语句,该函数会为我提供正确的值。

代码如下:

def calc_age(dataset):
    index = dataset.index
    for element in index:
        year_nasc = train['DT_NASCIMENTO_BENEFICIARIO'][element][6:]
        year_insc = train['ANO_CONCESSAO_BOLSA'][element]
        age = int(year_insc) - int(year_nasc)
        print ('Age: ', age)
        #return age

train['DT_NASCIMENTO_BENEFICIARIO'] = 03-02-1987

train['ANO_CONCESSAO_BOLSA'] = 2009

我做错了什么?!

【问题讨论】:

  • 请发布您的数据集的子集和您正在寻找的输出
  • 这就是return 语句的工作原理。一旦您的函数遇到 return 语句,它就会立即返回到调用者函数。如果取消注释 return 语句,它将为第一个索引返回 age 的值,无论您有多少行。它甚至不会处理下一个索引。你对这个功能有什么期望?
  • 我试图根据该公式获取 DataFrame 中每一行的年龄。
  • 在这种情况下,您可以将这些年龄存储到一个列表中并在循环之后返回该列表。

标签: python function dataframe data-science data-analysis


【解决方案1】:

如果您想要从ANO_CONCESSAO_BOLSA 中减去DT_NASCIMENTO_BENEFICIARIO 的年份,而df 是您的DataFrame:

# cast to datetime
df["DT_NASCIMENTO_BENEFICIARIO"] = pd.to_datetime(df["DT_NASCIMENTO_BENEFICIARIO"])
df["age"] = df["ANO_CONCESSAO_BOLSA"] - df["DT_NASCIMENTO_BENEFICIARIO"].dt.year

# print the result, or do something else with it:
print(df["age"])

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 2018-03-21
    相关资源
    最近更新 更多