我有一个pandas数据框,其中包含列经度
和纬度
。我想从他们那里得到X
和Y
。utm
中有一个函数,名为from_latlon
,用于执行此操作。它接收纬度
和经度
,并给出[X,Y]
。我是这样做的:
def get_X(row):
return utm.from_latlon(row['Latitude'], row['Longitude'])[0]
def get_Y(row):
return utm.from_latlon(row['Latitude'], row['Longitude'])[1]
df['X'] = df.apply(get_X, axis=1)
df['Y'] = df.apply(get_Y, axis=1)
我想定义一个函数get_XY
并应用from_latlon
一次以节省时间。我看了看这里,这里和这里,但是我找不到一种方法来使用一个应用
函数制作两列。谢谢。
我合并了一个类似线程中的两个答案,现在有了一个通用的多列输入,多列输出模板,我在Jupyter/pandas中使用:
# plain old function doesn't know about rows/columns, it just does its job.
def my_func(arg1,arg2):
return arg1+arg2, arg1-arg2 # return multiple responses
df['sum'],df['difference'] = zip(*df.apply(lambda x: my_func(x['first'],x['second']),axis=1))
可以从函数返回一个列表:
d = pandas.DataFrame({
"A": [1, 2, 3, 4, 5],
"B": [8, 88, 0, -8, -88]
})
def foo(row):
return [row["A"]+row["B"], row["A"]-row["B"]]
>>> d.apply(foo, axis=1)
A B
0 9 -7
1 90 -86
2 3 3
3 -4 12
4 -83 93
您还可以返回一个序列。这允许您指定返回值的列名:
def foo(row):
return pandas.Series({"X": row["A"]+row["B"], "Y": row["A"]-row["B"]})
>>> d.apply(foo, axis=1)
X Y
0 9 -7
1 90 -86
2 3 3
3 -4 12
4 -83 93
我有以下函数(一个以列作为输入的热编码函数)。我基本上想把它应用到我的数据框中的一列,但似乎不明白出了什么问题。 猜我怎么称呼它有问题?
问题内容: 我有一个熊猫DataFrame,其中包含多个列: 我想基于对数据框的每一行应用一个函数为此数据框创建两个新列。我不想多次调用该函数(例如,通过执行两次单独的调用),因为它占用大量计算资源。我尝试通过两种方式来执行此操作,但它们都不起作用: 使用: 我编写了一个函数,该函数接受a并返回我想要的值的元组: 尝试将此应用于DataFrame会出现错误: 然后,我将使用此问题中显示的方法将从返
问题内容: 您可以使用两个不同的列中的值作为参数来制作python pandas函数吗? 我有一个函数,如果两列的值在相同范围内,则返回1。否则返回0: 我希望第一个参数成为数据框中的一列,以使函数将采用该列中每一行的值。例如是,第二个参数是df [‘ResponseCol’]`。我希望结果是数据框中的新列。我遇到了几个 回答了类似问题的线程,但看起来这些参数是变量,而不是数据帧行中的值。 我尝试
我试图计算一个折扣,我想应用到我的数据帧的两列中的每一行,并将结果添加到一个新列中。 我已经尝试了很多方法,通过遵循现有的例子,但是每次都发生错误。 我将函数定义为: 然后尝试将该函数应用于我的数据框 我希望有一个新的列,其中每一行都是应用于ordini[“revenue1”]和ordini[“revenue2”]的函数的结果。 但我得到了以下错误: ValueError:序列的真值不明确。使用a
我是熊猫的新手。想知道如何将函数应用到数据框中的两列,并将函数的输出映射到数据框中的新列。这在熊猫语法中是可能的,还是我应该求助于本地Python来迭代数据框列中的行来生成新列? 问题是如何得到,例如,在一个新的列c中两个数字的乘法
如何在熊猫身上做到这一点: 更新2:这个问题是在V0.11.0左右提出的。因此,许多问题和答案都不太相关。