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])
来删除。