我是熊猫的新手。想知道如何将函数应用到数据框中的两列,并将函数的输出映射到数据框中的新列。这在熊猫语法中是可能的,还是我应该求助于本地Python来迭代数据框列中的行来生成新列?
a b
1 2
3 1
2 9
问题是如何得到,例如,在一个新的列c中两个数字的乘法
a b c
1 2 2
3 1 3
2 9 18
哈佛大学的注释显示了实现特定示例的最简单方法,但是这里有一个通用的方法来完成你所要求的:
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列值的平方
你可以用熊猫做以下事情
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
你可以用熊猫。
例如:
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 = 提前期待您的帮助和感谢!