如何在Python Pandas中将存储在两个单元格(开始和结束在两列)中的值范围扩展为行(较长版本)



请提供帮助或建议,我想在Pandas或Python中的任何其他模块中自动化这个过程,以便我可以进行进一步的处理。我已经有了VBA脚本,但它在Excel中需要很长时间,我希望python脚本会更快。

当前数据帧如下df_原始={'TOWN_NAME':['ZAKARIYA PARK','zakarya PARK EXTENSION 1','ZWAVEL','zavel EXTENSION 1'],'FH_TYPE':['GP','AH','SUB','D'],"SG_NO":[‘A16/1987’,‘A2269/1987’,‘A3754/1987’和‘A1108/1988’],'ERF_FROM':[1,9430564],'ERF_TO':[548856286]}

df=pd.DataFrame(df_original(df

当前数据帧

所需输出为;

df_exp={"TOWN_NAME":["扎卡里亚公园","扎卡里亚公园",‘扎卡里亚花园’,‘扎卡里亚公园’,‘扎卡里亚公园扩建1’,‘ZAKARIYA公园扩建1",‘zacariya公园扩展1’,’扎卡里亚园园扩展1‘,’扎卡里亚花园扩展1‘‘,’扎卡里亚花园扩展一‘,’,'FH_TYPE':['GP','GP],'gg','p',‘SG_NO’:[‘1987年16月’,‘1987年6月’,’1987年16日’,‘一九八七年16日‘,’A2269/1987‘,’2269/1987‘,’226 9/1987’,’2269/1987‘,’,'ERF_FROM':[1,1,1,1,9,9,9,9.9,9,9,99],'ERF_TO':[5,5,5,542842842842842,8428428428],'ERF_EXP':[1,2,3,4,5,9,10,11,12,13,14,15,16,17]}

df_expanded=pd.DataFrame(df_exp(df_扩展

所需数据帧

>>> df
a  b  from  to
0  c  d     1   5
1  e  f     8  12

您可以使用.reindex().repeat()来展开行,使用.groupby().cumcount()来添加exp列。

df = df.reindex(df.index.repeat(df['to'] + 1 - df['from']))
df['exp'] = df['from'] + df.groupby(level=0).cumcount()
df.reset_index(drop=True, inplace=True)

结果:

>>> df
a  b  from  to  exp
0  c  d     1   5    1
1  c  d     1   5    2
2  c  d     1   5    3
3  c  d     1   5    4
4  c  d     1   5    5
5  e  f     8  12    8
6  e  f     8  12    9
7  e  f     8  12   10
8  e  f     8  12   11
9  e  f     8  12   12

最新更新