Как уже упоминалось в другом комментарии, pd.merge () - это то, как вы должны объединить два фрейма данных и извлечь столбец. Проблема заключается в том, что слияние только «State» и «Month» приведет к тому, что каждая перестановка станет новым столбцом (все Al-4 в df_1 объединятся со всеми другими AL-4 в df_2).
С вашим Например, будет
df_1
State Month Total Time df_1 col...
0 AL 4 1000 6
1 AL 4 500 7
2 VA 12 750 8
3 VA 12 1500 9
df_2
State Month df_2 col...
0 AL 4 1
1 AL 4 2
2 VA 12 3
3 VA 12 4
df_1_cols_to_use = ['State', 'Month', 'Total Time']
# note the selection of the column to use from df_1. We only want the column
# we're merging on, plus the column(s) we want to bring in, in this case 'Total Time'
new_df = pd.merge(df_2, df_1[df_1_cols_to_use], on=['State', 'Month'], how='left')
new_df:
State Month df_2 col... Total Time
0 AL 4 1 1000
1 AL 4 1 500
2 AL 4 2 1000
3 AL 4 2 500
4 VA 12 3 750
5 VA 12 3 1500
6 VA 12 4 750
7 VA 12 4 1500
Вы упоминаете, что они имеют разные длины индекса. Основываясь на параметрах вопроса, невозможно определить, какое значение Total Time будет соответствовать строке в df_2. Если в df_2 есть три записи AL-4, получают ли они по 1000, 500 или какую-то комбинацию? Эта информация будет необходима. Без этого это было бы лучшим предположением для получения всех возможностей.