Если назначить Series
с другими значениями индекса, генерируются пропущенные значения, как в первой строке. Для правильного присвоения нужны одинаковые значения в Series
и в DataFrame
.
Проблема в том, np.c_
вернуть 2d массив без значений индекса:
print (np.c_[s,t])
[[ 1 2]
[ 2 4]
[ 3 6]
[ 4 8]
[ 5 10]
[ 6 12]]
Так что если использовать DataFrame
конструктор создается по умолчанию Range_Index
, начиная с 0
:
df = pd.DataFrame(np.c_[s,t],columns = ["MUL1","MUL2"])
print (df)
MUL1 MUL2
0 1 2 <- first 0 index
1 2 4
2 3 6
3 4 8
4 5 10
5 6 12
print (s)
1 1 <- first 1 index
2 2
3 3
4 4
5 5
6 6
dtype: int64
print (t)
1 2 <- first 1 index
2 4
3 6
4 8
5 10
6 12
dtype: int64
Если изменить конструктор DataFrame, например, по словарю:
df = pd.DataFrame({"MUL1":s, "MUL2":t})
print (df)
MUL1 MUL2
1 1 2 <- first 1 index
2 2 4
3 3 6
4 4 8
5 5 10
6 6 12
Или добавить параметр index
к DataFrame
конструктор по s
или t
Series:
df = pd.DataFrame(np.c_[s,t],columns = ["MUL1","MUL2"], index=t.index)
print (df)
MUL1 MUL2
1 1 2
2 2 4
3 3 6
4 4 8
5 5 10
6 6 12
Так что если присвоить t
, например, для нового столбца все работает правильно, потому что одинаковые индексы в df
и в t
:
df["MUL3"] =t
print (df)
MUL1 MUL2 MUL3
1 1 2 2
2 2 4 4
3 3 6 6
4 4 8 8
5 5 10 10
6 6 12 12