我想应用一个自定义函数并创建一个名为population2050的派生列,它基于我的数据框中已经存在的两列。
import pandas as pd
import sqlite3
conn = sqlite3.connect('factbook.db')
query = "select * from facts where area_land =0;"
facts = pd.read_sql_query(query,conn)
print(list(facts.columns.values))
def final_pop(initial_pop,growth_rate):
final = initial_pop*math.e**(growth_rate*35)
return(final)
facts['pop2050'] = facts['population','population_growth'].apply(final_pop,axis=1)
当我运行上面的代码时,我得到一个错误。我没有正确使用“应用”功能吗?
你就快到了:
使用lambda允许您保留函数中列出的特定(有趣的)参数,而不是将它们捆绑在一个“行”中。
“应用”将沿整行传递,轴为1。假设您的两个列名为
initial_pop
和growth_rate
,则进行如下调整您可以在不需要
DataFrame.apply()
的情况下获得相同的结果。Pandas系列(或dataframe列)可以用作NumPy函数的直接参数,甚至可以用作内置的Python运算符,这些运算符是按元素应用的。在您的情况下,它简单如下:这将使列
population_growth
中的每个元素相乘,将numpy的exp()
函数应用于该新列(35 * population_growth
),然后使用population
添加结果。相关问题 更多 >
编程相关推荐