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

将函数应用于两列并将输出映射到新列[重复]

路昆杰
2023-03-14

我是熊猫的新手。想知道如何将函数应用到数据框中的两列,并将函数的输出映射到数据框中的新列。这在熊猫语法中是可能的,还是我应该求助于本地Python来迭代数据框列中的行来生成新列?

a b

1 2
3 1
2 9

问题是如何得到,例如,在一个新的列c中两个数字的乘法

a b c

1 2 2
3 1 3
2 9 18

共有3个答案

田成化
2023-03-14

哈佛大学的注释显示了实现特定示例的最简单方法,但是这里有一个通用的方法来完成你所要求的:

def functionUsedInApply(row):
    """ The function logic for the apply function comes here. 

    row: A Pandas Series containing the a row in df.
    """
    return row['a'] * row['b']

def functionUsedInMap(value):
    """ This function is used in the map after the apply.
    For this example, if the value is larger than 5, 
    return the cube, otherwise, return the square.     

    value: a value of whatever type is returned by functionUsedInApply.
    """
    if value > 5:
        return value**3
    else:
        return value**2

df['new_column_name'] = df.apply(functionUsedInApply,axis=1).map(functionUsedInMap)

上面的函数首先将a列和b列相加,然后返回a列和b列值的平方

易博文
2023-03-14

你可以用熊猫做以下事情

import pandas as pd

def func(r):
    return r[0]*r[1]

df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6]})
df['c'] = df.apply(func, axis = 1)

另外,这是官方文件https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

农永宁
2023-03-14

你可以用熊猫。

例如:

def funcMul(row):
    return row['a']*row['b']

然后,

df['c'] = df.apply(funcMul,1)

输出:

    a   b   c
0   1   2   2
1   3   1   3
2   2   9   18
 类似资料:
  • 我有一个pandas数据框,其中包含列和。我想从他们那里得到和。中有一个函数,名为,用于执行此操作。它接收和,并给出。我是这样做的: 我想定义一个函数并应用一次以节省时间。我看了看这里,这里和这里,但是我找不到一种方法来使用一个函数制作两列。谢谢。

  • 我有一个 pyspark df,它有很多列,但子集看起来像这样: 我想映射一个函数some_func(),它只使用列“lat”、“lon”和“event_id”来返回一个布尔值,该值将作为名为“验证”的单独列添加到df中。基本上,我需要单独检索函数中感兴趣的列并对它们进行操作。我知道我可以使用UDF或df.withColumn(),但它们用于映射到单列。为此,我需要将感兴趣的列连接为一列,这会使代

  • 我有以下函数(一个以列作为输入的热编码函数)。我基本上想把它应用到我的数据框中的一列,但似乎不明白出了什么问题。 猜我怎么称呼它有问题?

  • 我有一个类型的变量,其中item如下所示: 我想将其重新排序为,其中键是customerId,然后值是具有该客户ID的所有项的列表。

  • 如何在熊猫身上做到这一点: 更新2:这个问题是在V0.11.0左右提出的。因此,许多问题和答案都不太相关。

  • 我有以下问题: 包含带有字符串 、 或 C 的 。 带有的第二个 。 以及其他三列 、 和 (这些列也命名为 、 和 )。 因此 应获得 现在我想遍历每一行,并根据 中的条目将 中的整数分配给列 A、B 或 C。 如何实现此目的? < code>df.withColumn()我不能使用(或者至少我不知道为什么),对于< code>val df2 = df.map(x = 提前期待您的帮助和感谢!