【问题标题】:Nested for and if loops applied on each row of the dataframe嵌套 for 和 if 循环应用于数据帧的每一行
【发布时间】:2020-01-01 04:27:49
【问题描述】:

我正在处理 2 个数据帧。第一个数据框具有这种形式的 x 和 y 坐标。东坐标有“x”坐标,北坐标有“y”坐标。

Blast Hole    East Coordinate                  North Coordinate
105,100,99  16764.83,16752.74,16743.1   107347.67,107360.32,107362.96

我有另一个数据框,它有数百万行,基本上代表 x、y 和 z 的立方体尺寸及其长度和宽度。数据框的结构如下所示:

XMORIG       YMORIG    ZMORIG     XC          YC         ZC
14212.37    104364.2    1300    17499.87    105601.7    2852.5
14212.37    104364.2    1300    17499.87    105601.7    2867.5
14212.37    104364.2    1300    17474.87    105601.7    2867.5
14212.37    104364.2    1300    17499.87    105626.7    2852.5
14212.37    104364.2    1300    17499.87    105626.7    2867.5
14212.37    104364.2    1300    17499.87    105676.7    2867.5
14212.37    104364.2    1300    17524.87    105701.7    2867.5

其中 XC、YC 和 ZC 是立方体在 x、y 和 z 轴上的质心。

我期待的是编写一个带有 for 和 if 嵌套循环的函数,其中函数从第一个数据库中选择 x 和 y 坐标,并在第二个数据库的行中查找 x 和 y 坐标位于距第二个数据库中的 x 和 y 质心。对于 x 和 y 坐标与 x 和 y 质心的距离小于 12.5 m 的行,我想选择所有这些行并从中创建一个新的 df。

到目前为止我尝试过的代码是:

def ValidCampaign_rows(row):

    for i in x3:

        if i - Xcentroid <= abs(12.5):

            for i in y3:

                if i - Ycentroid <= abs(12.5):

我不知道如何在选择这些行并继续为列表中的每个坐标写入新的 df 后写入。

提前致谢。

【问题讨论】:

    标签: python python-3.x for-loop if-statement


    【解决方案1】:

    首先,让我们将东和北分成三个不同的列。使用下面这样的代码。

    #Assuming your first df is "data" 
    new = data["East Coordinate"].str.split(",", n = 1, expand = True) 
    
    data["EC1"]= new[0] 
    
    data["EC2"]= new[1] 
    
    # Dropping old Name columns 
    data.drop(columns =["East Coordinate"], inplace = True)
    
    #convert the columns to float
    data['EC1'] = data['EC1'].astype(float)
    #do the same for other columns as well
    

    然后让我们写条件来检查

    #assuming your second df is in data_2
    for index,record in data.iterrows():
          data_new = data_2 [abs(data['XC']-record['EC1'])<=12.5 & ....]
    

    .... 表示其他类似的条件。

    如果您希望满足其中任何一个条件,请使用“|” (或)代替“&”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2012-08-15
      • 2018-08-19
      相关资源
      最近更新 更多