Как переименовать значения в столбце из списка?

Вы вводите в заблуждение поэтапное умножение и умножение матрицы (см. ?"*"). Вы хотите %*%:

> a[3,]%*%a[,3]
     [,1]
[1,]  150
2
задан RustyShackleford 27 February 2019 в 16:02
поделиться

2 ответа

assign

Это работает только для примера OP, где длина lst совпадает с кадром данных df

df.assign(col1=lst)

   col1   col2
0  new1  test1
1  new2  test2
2  new3  test3
3  new4  test4
4  new5  test5

В более общем виде

Это более общее. Если вы не используете Python 3.6 и у вас есть f-строки, вы можете использовать str.format

df.assign(col1=[f'new{i+1}' for i in range(len(df))])
# df.assign(col1=[*map('new{}'.format, range(1, len(df) + 1))])

   col1   col2
0  new1  test1
1  new2  test2
2  new3  test3
3  new4  test4
4  new5  test5

с itertools

. Если вы хотите просто повторить список, вы получил, я бы использовал itertools islice и cycle

from itertools import cycle, islice

df.assign(col1=[*islice(cycle(lst), len(df))])

   col1   col2
0  new1  test1
1  new2  test2
2  new3  test3
3  new4  test4
4  new5  test5
0
ответ дан piRSquared 27 February 2019 в 16:02
поделиться

В одну сторону от numpy.put

lst = ['new1','new2']
np.put(df['col1'],np.arange(len(df)),lst)
df
Out[37]: 
   col1   col2
0  new1  test1
1  new2  test2
2  new1  test3
3  new2  test4
4  new1  test5
<час>

Другой вариант

n=len(df)
df['col1']=(lst*((n//len(lst))+1))[:n]
df
Out[48]: 
   col1   col2
0  new1  test1
1  new2  test2
2  new1  test3
3  new2  test4
4  new1  test5
0
ответ дан WeNYoBen 27 February 2019 в 16:02
поделиться
Другие вопросы по тегам:

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