首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:如何正确使用apply()?

Python:如何正确使用apply()?
EN

Stack Overflow用户
提问于 2019-06-13 21:29:54
回答 2查看 1.4K关注 0票数 1

我有一个包含点的geopandas数据框架

代码语言:javascript
复制
df:

        geometry
    0   POINT (806470.3646198167 2064879.919354021)
    1   POINT (792603.391127742 2170760.8355139)
    2   POINT (787263.3037740411 2050925.953643546)
    3   POINT (809203.6762813283 2160874.194588484)
    4   POINT (781668.2687635225 2051524.634389534)

对于每个点,我都想应用这个函数:

代码语言:javascript
复制
def returnValuePoints(df, i):
    points_list = [ (df['geometry'][i].x, df['geometry'][i].y) ] #list of X,Y coordinates
    for point in points_list:
        col = int((point[0] - xOrigin) / pixelWidth)
        row = int((yOrigin - point[1] ) / pixelHeight)
        return (row, col)

这就是我要做的:

代码语言:javascript
复制
for i in df.index:
    val = returnValuePoints(df, data, i)

如何避免循环并使用apply()将此函数应用于所有行

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-13 21:41:41

首先,您需要重新构造您的方法,以便它接受可以使用apply中的lambda函数传递的值(考虑您希望如何对单个行的值进行操作):

代码语言:javascript
复制
def returnValuePoints(x, y):
    point = (x, y)
    col = int((point[0] - xOrigin) / pixelWidth)
    row = int((yOrigin - point[1] ) / pixelHeight)
    return (row, col)

其次,您可以使用axis=1在数据帧上调用apply,以便能够访问每行的列值:

代码语言:javascript
复制
val = df.apply(lambda x: returnValuePoints(x.geometry.x, x.geometry.y), axis=1)
票数 1
EN

Stack Overflow用户

发布于 2019-06-14 21:27:57

我将向您展示一个示例。

代码语言:javascript
复制
import pandas as pd 

# reading csv 
s = pd.read_csv("stock.csv", squeeze = True) 

# defining function to check price 
def fun(num): 

    if num<200: 
        return "Low"

    elif num>= 200 and num<400: 
        return "Normal"

    else: 
        return "High"

# passing function to apply and storing returned series in new 
new = s.apply(fun) 

# printing first 3 element 
print(new.head(3)) 

# printing elements somewhere near the middle of series 
print(new[1400], new[1500], new[1600]) 

# printing last 3 elements 
print(new.tail(3)) 

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56581654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档