Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式条件合并两行_Python_Regex_Pandas_Merge - Fatal编程技术网

Python 使用正则表达式条件合并两行

Python 使用正则表达式条件合并两行,python,regex,pandas,merge,Python,Regex,Pandas,Merge,假设我有一个数据帧: name lat lon 0 Changchong-Luya Creek (Sta. 0+000-1+680) Start 15.085700 120.919967 1 Sudan Creek (Sta. 0+000 - 3+200) Start 15.073000 120.915930 2 Sudan Creek (Sta.

假设我有一个数据帧:

    name                                            lat         lon
0   Changchong-Luya Creek (Sta. 0+000-1+680) Start  15.085700   120.919967
1   Sudan Creek (Sta. 0+000 - 3+200) Start          15.073000   120.915930
2   Sudan Creek (Sta. 0+000 - 3+200) End            15.079350   120.893350
3   Nikko Boss Creek (Sta. 0+000 - 3+000) Start     15.079980   120.912930
4   Nikko Boss Creek (Sta. 0+000 - 3+000) End       15.076720   120.925670
如果满足以下条件,我希望合并两行:

  • 他们是同一条小溪
  • 如果一个是同一条小溪的起点,另一个是终点
  • 生成的数据帧是:

      name                  start_lat  start_lon  end_lat    end_lon   
    0 Sudan Creek           15.073000 120.915930  15.079350  120.893350
    1 Nikko Boss Creek      15.079980 120.912930  15.076720  120.925670
    
    我已经对行进行了迭代,但是是否有一些方法可以混合使用regex呢?

    以下是我的方法:

    # extract the information and join
    new_df = df.join(df['name'].str.extract('(.*) \(.*\) (Start|End)'))
    
    # pivot 
    new_df = new_df.pivot(index=0, columns=1, values=['lat','lon'])
    
    # flatten column names
    new_df.columns = [f'{b.lower()}_{a}' for a,b in new_df.columns]
    
    # remove nan
    new_df.dropna(how='any')
    
    输出:

                       end_lat  start_lat    end_lon  start_lon
    0                                                          
    Nikko Boss Creek  15.07672   15.07998  120.92567  120.91293
    Sudan Creek       15.07935   15.07300  120.89335  120.91593
    

    我遇到了这个错误:
    索引包含重复的条目,无法重塑
    ,这通常意味着您有重复的条目(小溪名称)。在第一个
    join
    命令之后,运行
    new_df[new_df.duplicated([0,1],keep=True)]
    查看小溪名称上是否有重复项。抱歉,我的意思是
    False
    保留所有副本。这是用于审核的。您可以使用
    new\u df.drop\u duplicates([0,1])
    来删除。