If you want to do an "all-to-all" matching you can do a cartesian product:
import numpy as np
import pandas as pd
df = pd.DataFrame([[100, 'Healthcare']], columns=['Id', 'Dept'])
date = np.array(['2007-01-03', '2007-01-10', '2007-01-17', '2007-01-24'],
dtype='datetime64[D]')
df['_tmp'] = 0
df2 = pd.DataFrame({'Date': date})
df2['_tmp'] = 0
result = pd.merge(df, df2, on='_tmp').drop('_tmp', axis=1)
print(result)
# Id Dept Date
# 0 100 Healthcare 2007-01-03
# 1 100 Healthcare 2007-01-10
# 2 100 Healthcare 2007-01-17
# 3 100 Healthcare 2007-01-24
This makes it more easily extendable to the case where you have more than one row in the first data frame, if that is relevant for you:
import numpy as np
import pandas as pd
df = pd.DataFrame([[100, 'Healthcare'], [200, 'Security']], columns=['Id', 'Dept'])
date = np.array(['2007-01-03', '2007-01-10', '2007-01-17', '2007-01-24'],
dtype='datetime64[D]')
df['_tmp'] = 0
df2 = pd.DataFrame({'Date': date})
df2['_tmp'] = 0
result = pd.merge(df, df2, on='_tmp').drop('_tmp', axis=1)
print(result)
# Id Dept Date
# 0 100 Healthcare 2007-01-03
# 1 100 Healthcare 2007-01-10
# 2 100 Healthcare 2007-01-17
# 3 100 Healthcare 2007-01-24
# 4 200 Security 2007-01-03
# 5 200 Security 2007-01-10
# 6 200 Security 2007-01-17
# 7 200 Security 2007-01-24