当前位置: 首页 > 面试题库 >

Python-如何将函数应用于Pandas数据框的两列

韩捷
2023-03-14
问题内容

假设我有一个df包含的列'ID', 'col_1', 'col_2'。我定义一个函数:

f = lambda x, y : my_function_expression。

现在,我要应用f到df的两列'col_1', 'col_2',以逐元素的计算新列'col_3',有点像:

df['col_3'] = df[['col_1','col_2']].apply(f)  
# Pandas gives : TypeError: ('<lambda>() takes exactly 2 arguments (1 given)'

怎么做 ?

如下添加详细样本 *

import pandas as pd

df = pd.DataFrame({'ID':['1','2','3'], 'col_1': [0,2,3], 'col_2':[1,4,5]})
mylist = ['a','b','c','d','e','f']

def get_sublist(sta,end):
    return mylist[sta:end+1]

#df['col_3'] = df[['col_1','col_2']].apply(get_sublist,axis=1)
# expect above to output df as below 

  ID  col_1  col_2            col_3
0  1      0      1       ['a', 'b']
1  2      2      4  ['c', 'd', 'e']
2  3      3      5  ['d', 'e', 'f']

问题答案:

这是apply在数据框上使用的示例,我正在用进行调用axis = 1

请注意,区别在于,与其尝试将两个值传递给该函数f,不如重写该函数以接受pandas Series对象,然后对Series进行索引以获取所需的值。

In [49]: df
Out[49]: 
          0         1
0  1.000000  0.000000
1 -0.494375  0.570994
2  1.000000  0.000000
3  1.876360 -0.229738
4  1.000000  0.000000

In [50]: def f(x):    
   ....:  return x[0] + x[1]  
   ....:  

In [51]: df.apply(f, axis=1) #passes a Series object, row-wise
Out[51]: 
0    1.000000
1    0.076619
2    1.000000
3    1.646622
4    1.000000

根据你的用例,有时创建一个pandas group对象然后apply在组中使用很有帮助。



 类似资料:
  • 怎么办? **添加详细示例如下***

  • 问题内容: 您可以使用两个不同的列中的值作为参数来制作python pandas函数吗? 我有一个函数,如果两列的值在相同范围内,则返回1。否则返回0: 我希望第一个参数成为数据框中的一列,以使函数将采用该列中每一行的值。例如是,第二个参数是df [‘ResponseCol’]`。我希望结果是数据框中的新列。我遇到了几个 回答了类似问题的线程,但看起来这些参数是变量,而不是数据帧行中的值。 我尝试

  • 本文向大家介绍将大写应用于Python中Pandas数据框中的列,包括了将大写应用于Python中Pandas数据框中的列的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将看到如何在DataFrame中使名称列变为大写。让我们看看实现目标的不同方法。 示例 我们可以使用upper()方法将其大写,从而为DataFrame分配一列。 让我们看一下代码。 输出结果 如果运行上面的程序,您将得

  • 问题内容: 我在将大写字母应用于DataFrame中的列时遇到麻烦。 数据框为。 是需要应用大写的列标题。 问题是值由三个字母和三个数字组成。例如是值之一。 我收到一个错误: 如何将大写字母应用于DataFrame列中的前三个字母? 问题答案: 这应该工作: 并且您是否希望所有名称都使用大写格式:

  • 问题内容: 我对熊猫还很陌生,所以我希望这将是一个简单的答案(我也感谢所有指向数据框设置的指针) 假设我有以下DataFrame: 现在,我想按“ gp”分组并获取“ vector”的均值 我试过了 乃至 但我收到一个错误,没有要聚合的“数字类型”。那么np.arrays在熊猫中不起作用吗? 问题答案: 对我来说,它有效: 我取两次平均值,因为您想要向量均值的均值组值(不是吗?)。 如果要使用均值

  • 问题内容: 我想将带有参数的函数应用于python pandas中的系列: 问题答案: 位置参数添加到系列元素之后。 对于旧版本的pandas: 文档对此进行了清楚的说明。apply方法接受应具有单个参数的python函数。如果要传递更多参数,则应按照在其评论中的建议使用。 一个例子: 你也可以使用传递关键字参数。 另一种方法是创建一个lambda: 但我认为使用partial会更好。