Python 如何重复循环列表以指定值
我有两个数据帧。在df1中,我有一个字符串列,其中有一个唯一值的有限列表。我想让这些值成为一个列表,然后循环并在df2上附加一个新列。该值将在列表中循环,然后在第二个数据帧的整个范围内重新开始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
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