Как многократно просматривать список для присвоения значений - PullRequest
0 голосов
/ 09 июля 2019

У меня есть два кадра данных панд.В df1 у меня есть строковый столбец с конечным списком уникальных значений.Я хочу сделать эти значения списком, затем перебрать и добавить новый столбец в df2.Значение будет циклически проходить по списку, а затем начинаться заново для всего диапазона второго фрейма данных.

df1
    my_value
0       A
1       B
2       C

df2
    color
0   red
1   orange
2   yellow
3   green
4   blue
5   indigo
6   violet
7   maroon
8   brown
9   black

What I want
    color          my_value
0   red             A
1   orange          B
2   yellow          C
3   green           A
4   blue            B
5   indigo          C
6   violet          A
7   maroon          B
8   brown           C
9   black           A

#create list
my_list = pd.Series(df1.my_value.values).to_list()

# create column
my_new_column = []

for i in range(len(df2)):
    assigned_value = my_list[i]

    my_new_column.append(assigned_value)

df2['my_new_column'] = my_new_column

return df2

Индекс и диапазон списка имеют разную длину, и именно здесь я зацикливаюсь.

Это очень просто, и я полностью смотрю за решением, пожалуйста, не стесняйтесь связать меня с другим вопросом, если на него есть ответ в другом месте.Спасибо за ваш вклад!

1 Ответ

0 голосов
/ 09 июля 2019
#You can use zip with itertools.cycle() to cycle thru the smallest list/Series

df1 = pd.Series(data=['a','b','c'],name='my_values')
df2 = pd.Series(data= 'red','orange','yellow','green','blue','indigo','violet','maroon','brown','black'], name='color')

import itertools

df2 = pd.concat([df2, pd.Series([b for a,b in zip(df2 , itertools.cycle(df1))], name='my_value')],axis=1)
df2


   color    my_value
0   red     a
1   orange  b
2   yellow  c
3   green   a
4   blue    b
5   indigo  c
6   violet  a
7   maroon  b
8   brown   c
9   black   a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...