You can try:
import pandas as pd
df = pd.DataFrame({'number': [float('NaN'), 3.0, 0.5, float('NaN'), 1.0], 'variable':['bank','shop','market','government','hotel'], 'values':[True, False, True, True, True]})
print("----- ORIGINAL ------")
print(df)
shop_index = df.reset_index()['variable'].tolist().index('shop')
insert = pd.DataFrame({"number": 0.2, "variable": "park", "values": False}, index=[shop_index+1])
df2 = pd.concat([df.iloc[:shop_index+1], insert, df.iloc[shop_index+1:]]).reset_index(drop=True)
print("----- AFTER INSERT ------")
print(df2)
Output:
----- ORIGINAL ------
number variable values
0 NaN bank True
1 3.0 shop False
2 0.5 market True
3 NaN government True
4 1.0 hotel True
----- AFTER INSERT ------
number variable values
0 NaN bank True
1 3.0 shop False
2 0.2 park False
3 0.5 market True
4 NaN government True
5 1.0 hotel True