Python 如何重复循环列表以指定值

Python 如何重复循环列表以指定值,python,python-3.x,pandas,for-loop,Python,Python 3.x,Pandas,For Loop,我有两个数据帧。在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

我有两个数据帧。在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
列表索引和范围是不同的长度,这是我挂断的地方


这是非常直截了当的,我完全忽略了解决方案,如果其他地方有答案,请随时将我链接到另一个问题。谢谢你的输入

df['new']=(df.index%3).map({0:A',1:B',2:C})
谢谢!我一直在玩弄国防部。您的答案最终成功了,只是替换了映射中的列,而不是显式地调用值。
#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