如何读取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
相关产品推荐
相关产品推荐

