You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取DataFrame中的坐标列并对每个元组元素应用分类函数

如何读取DataFrame中的坐标列并对每个元组元素应用分类函数

看起来你已经有了核心思路,但在函数定义和DataFrame操作的细节上有点卡壳,我来帮你理顺整个流程,解决你的问题:

首先,先把你的示例数据转换成真正的Pandas DataFrame(因为你一开始给的是普通列表,得先结构化):

import pandas as pd

# 把坐标列表转为带列名的DataFrame
df = pd.DataFrame([(0,23),(1,22),(4,39),(3,15)], columns=['X', 'Y'])

接下来,我们需要一个能分别判断X、Y坐标范围并组合方向的函数。你之前的函数没有接收参数,也没处理元组里的X/Y值,这是关键问题。我们重新写一个:

def classify_location(row):
    # 判断X轴方向:你提到0-23为West(Oeste),其他默认East(Este)
    x_direction = "Oeste" if 0 <= row['X'] <= 23 else "Este"
    
    # 判断Y轴方向:28-40为North(Norte),其他默认South(Sur)
    y_direction = "Norte" if 28 <= row['Y'] <= 40 else "Sur"
    
    # 组合成最终方位(比如Norte+Oeste = Noroeste)
    return f"{y_direction}{x_direction}"

然后用apply函数把这个逻辑应用到每一行,注意要指定axis=1(表示按行处理),同时直接生成新列:

# 添加新列存储分类结果
df['Ubicación comienzo'] = df.apply(classify_location, axis=1)

# 查看结果
print(df)

运行后你会得到这样的输出:

X   Y Ubicación comienzo
0  0  23             SurOeste
1  1  22             SurOeste
2  4  39         NorteOeste
3  3  15             SurOeste

如果你觉得写函数有点麻烦,也可以用更简洁的Pandas/Numpy条件判断实现,效率更高(适合大数据量):

import numpy as np

# 批量判断X、Y方向
x_dir = np.where(df['X'].between(0, 23), "Oeste", "Este")
y_dir = np.where(df['Y'].between(28, 40), "Norte", "Sur")

# 组合生成新列
df['Ubicación comienzo'] = y_dir + x_dir

你之前代码的问题总结:

  • 你的calle()函数没有接收参数,无法获取DataFrame中的坐标值;
  • 直接对包含元组的列用apply,但函数没有解析元组里的X和Y;
  • 手动插入固定列表的方式不灵活,没法自动适配所有数据,而apply或批量条件判断能自动处理每一行。

备注:内容来源于stack exchange,提问作者rosvend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:48:14