1>>>import numpy as np
2>>>import pandas as pd
3>>>4>>> df = pd.DataFrame({'X':[1.5,0.5,-1.5],'Y':[3.5,2.5,4.5],'Z':[5.0,7.0,6.5]})5>>>print(df)6 X Y Z
701.53.55.0810.52.57.092-1.54.56.510>>> x_max = df['X'].max()11>>> x_min = df['X'].min()12>>> y_max = df['Y'].max()13>>> y_min = df['Y'].min()14>>> df_x = pd.DataFrame(np.arange(x_min, x_max+1,1), columns=['X'])15>>>print(df_x)16 X
170-1.5181-0.51920.52031.521>>> df_y = pd.DataFrame(np.arange(y_min, y_max+1,1), columns=['Y'])22>>>print(df_y)23 Y
2402.52513.52624.527>>> df_cross = pd.merge(df_x, df_y, how='cross')28>>>print(df_cross)29 X Y
300-1.52.5311-1.53.5322-1.54.5333-0.52.5344-0.53.5355-0.54.53660.52.53770.53.53880.54.53991.52.540101.53.541111.54.542>>> df_all = pd.merge(df_cross, df, on=['X','Y'], how='left')43>>>print(df_all)44 X Y Z
450-1.52.5 NaN
461-1.53.5 NaN
472-1.54.56.5483-0.52.5 NaN
494-0.53.5 NaN
505-0.54.5 NaN
5160.52.57.05270.53.5 NaN
5380.54.5 NaN
5491.52.5 NaN
55101.53.55.056111.54.5 NaN
57>>> df_all.fillna(0, inplace=True)58>>>print(df_all)59 X Y Z
600-1.52.50.0611-1.53.50.0622-1.54.56.5633-0.52.50.0644-0.53.50.0655-0.54.50.06660.52.57.06770.53.50.06880.54.50.06991.52.50.070101.53.55.071111.54.50.0