Волшебный соус с (гео) пандами заключается в том, что он автоматически выравнивает данные по индексу. Так что это выравнивает ваш ряд значений по индексу фрейма данных. Максимум может быть только один матч. Если вы хотите присвоить постоянное значение новому столбцу, используйте скаляр.
Взять, к примеру (а не воспроизводимый пример, который я привел):
import pandas
df = pandas.DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]}, index=list('abc'))
s = pandas.Series([6], index=[0])
print(df.assign(C=s))
Получаем:
A B C
a 0 3 NaN
b 1 4 NaN
c 2 5 NaN
Это связано с тем, что индекс s
и индекс df
не имеют совпадений. Если бы было одно совпадение (начиная с len(s) == 1
), вы получите:
s = pandas.Series([6], index=['b'])
print(df.assign(C=s))
A B C
a 0 3 NaN
b 1 4 6.0
c 2 5 NaN
Но это не то, что вы хотите, поэтому вы должны просто использовать скаляр:
print(df.assign(C=6))
A B C
a 0 3 6
b 1 4 6
c 2 5 6