当前位置: 首页 > 知识库问答 >
问题:

如何将自定义函数应用到每一行的熊猫数据帧[重复]

范瀚昂
2023-03-14

我想应用一个自定义函数并创建一个名为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)

当我运行上面的代码时,我得到一个错误。我是否没有正确使用“应用”功能?

共有3个答案

汪欣德
2023-03-14

你的功能,

def function(x):
  // your operation
  return x

将您的函数称为,

df['column']=df['column'].apply(function)
东典
2023-03-14

你就快到了:

facts['pop2050'] = facts.apply(lambda row: final_pop(row['population'],row['population_growth']),axis=1)

使用lambda可以保留函数中列出的特定(有趣)参数,而不是将它们捆绑在一行中。

路阳华
2023-03-14

应用将通过你沿着轴=1的整行。这样调整,假设您的两个列被称为initial_popgrowth_rate

def final_pop(row):
    return row.initial_pop*math.e**(row.growth_rate*35)
 类似资料:
  • 假设熊猫数据帧如下所示: 如何将第三行(如row3)提取为pd数据帧?换句话说,row3.shape应该是(1,5),row3.head()应该是:

  • 我经常处理格式不好的数据(即数字字段不一致等) 可能还有其他方法,我不知道,但我格式化数据帧中单个列的方法是使用函数并将该列映射到该函数。 问题:1-如果我有一个包含50列的数据框,并且想要将该格式应用于多个列,等等列1, 3, 5, 7, 9, 你能去吗 ...这样我可以格式化所有的数字列在一行?

  • 下面是数据示例: 我需要将具有相同道具值的重复行删除到另一个数据框,并将它们从原始文件中删除。 所以另一个数据框应该是这样的(重复的行不应该重复): df=df.drop_duplicates()删除一个重复的行,但不是像这样的第二个:

  • 我试图通过保持行之间的一致性来随机化我的行,但会混淆行的顺序,从而随机化从属变量。我有以下数据帧: 并将行随机化: 然后执行重置索引,如 期望输出:

  • 我有两个Dataframes一个与日期集(df1)和另一个与emp_ids集(df2)。我试图创建一个新的Dataframe,这样df2中的每个emp_id都被标记为df1中的每个日期。 下面给出了我的数据帧的外观 df1 df2 预期产出: 我将日期列转换为字符串,并尝试执行以下操作,但返回的数据框为空 我尝试做

  • 有人能解释一下为什么这个代码不起作用吗? 它返回错误:TypeError:(“'NoneType'对象不可调用”,“发生在索引0上”)数据帧df在某些单元格中包含一些None值。我的意图是对所有非无值应用函数。