Оставил соединение с НС

Ваш первый порт вызова должен быть документацией , который объясняет это разумно ясно:

Брошено, чтобы указать, что к массиву был обращен незаконный индекс. Индекс является либо отрицательным, либо большим или равным размеру массива.

Так, например:

int[] array = new int[5];
int boom = array[10]; // Throws the exception

Как избежать этого. ., не делайте этого. Будьте осторожны с вашими индексами массива.

Одной из проблем, с которыми иногда сталкиваются люди, является то, что массивы 1-индексируются, например

int[] array = new int[5];
// ... populate the array here ...
for (int index = 1; index <= array.length; index++)
{
    System.out.println(array[index]);
}

Это пропустит первый элемент (индекс 0 ) и выдают исключение, когда индекс равен 5. Действующие индексы здесь 0-4 включительно. Правильный, идиоматический оператор for здесь будет:

for (int index = 0; index < array.length; index++)

(Предполагается, что вы нуждаетесь в индексе, конечно. Если вы можете использовать расширенный для цикла, сделайте это.)

1
задан Gordon Linoff 16 January 2019 в 14:05
поделиться

3 ответа

pd.merge(forecastFor, data, how='left')

приближает тебя ...

0   A   POL 2018-07-01  1   NaN NaN NaN
1   A   POL 2018-09-01  2   100.0   1.0 1001.0
2   A   POL 2018-10-01  3   100.0   1.0 1002.0
3   A   POL 2018-11-01  4   100.0   1.0 1003.0
4   A   USA 2018-09-01  5   100.0   2.0 1004.0
5   A   USA 2018-10-01  6   100.0   2.0 1005.0
6   B   POL 2018-06-01  7   106.0   3.0 1006.0
7   B   USA 2018-07-01  8   106.0   4.0 1007.0
8   B   USA 2018-08-01  9   106.0   4.0 1008.0
9   C   GER 2018-10-01  10  NaN NaN NaN
10  C   POL 2018-11-01  11  NaN NaN NaN
11  D   USA 2018-11-01  12  NaN NaN NaN```
0
ответ дан WBM 16 January 2019 в 14:05
поделиться

Вы можете просто получить столбцы из forecastFor с proj в data до присоединения влево, например:

forecastFor=forecastFor[forecastFor['proj'].isin(data.proj.unique())]
df=forecastFor.merge(data, on=['proj','country','date'], how='left')

ВЫХОД

   proj country        date  hours  feature_proj  feature_country  \
0     A     POL  2018-07-01      1           NaN              NaN   
1     A     POL  2018-09-01      2         100.0              1.0   
2     A     POL  2018-10-01      3         100.0              1.0   
3     A     POL  2018-11-01      4         100.0              1.0   
4     A     USA  2018-09-01      5         100.0              2.0   
5     A     USA  2018-10-01      6         100.0              2.0   
6     B     POL  2018-06-01      7         106.0              3.0   
7     B     USA  2018-07-01      8         106.0              4.0   
8     B     USA  2018-08-01      9         106.0              4.0   
9     C     GER  2018-10-01     10           NaN              NaN   
10    C     POL  2018-11-01     11           NaN              NaN   

    feature_date  
0            NaN  
1         1001.0  
2         1002.0  
3         1003.0  
4         1004.0  
5         1005.0  
6         1006.0  
7         1007.0  
8         1008.0  
9            NaN  
10           NaN  
0
ответ дан Ricky Kim 16 January 2019 в 14:05
поделиться

Извините, это было просто, записав вопрос, я сразу понял ответ:

projLevelFeaturesData = data[['proj', 'feature_proj']].drop_duplicates()
countryLevelFeaturesData = data[['proj', 'country', 'feature_country']].drop_duplicates().dropna()
dateLevelFeaturesData = data[['proj', 'country', 'date', 'feature_date']].drop_duplicates().dropna()
projJoined = forecastFor.merge(projLevelFeaturesData, on=['proj'], how='inner')
countryJoined = projJoined.merge(countryLevelFeaturesData, on=['proj', 'country'], how='left')
joined = countryJoined.merge(dateLevelFeaturesData, on=['proj', 'country', 'date'], how='left')
0
ответ дан godfryd 16 January 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: