说我有一个具有以下结构的熊猫数据框:
col1 col2
0 Jack Jill
1 Michael Micah
2 Derrick Daliah
3 Martin Martha
4 Patrick Patricia
5 Dennis Denise
我有一个字符列表:
characters = ['a', 'b', 'c']
我想在数据框中创建一个新列,因此df具有以下结构(输出):
col1 col2 label
0 Jack Jill a
1 Michael Micah b
2 Derrick Daliah c
3 Martin Martha a
4 Patrick Patricia b
5 Dennis Denise c
我以为可以通过重复访问两个列表来做到这一点,但是只能将iteratres压缩到最短列表的长度:
for x,y in zip(df['col1', characters):
print(y)
输出:
a
b
c
和一个嵌套的for循环:
for x in df['col1']:
for y in characters:
print(y)
在col1中为x中的每个名称打印每个字符(所以我得到Jack的a,b,c,给Michael的a,b,c等)
如示例输出所示,如果一旦字符列表完成后我可以让字符重复迭代,则可以将它们附加到列表中,然后:
df['label'] = characters_list_for_df
任何帮助都会很棒!
答案 0 :(得分:2)
您可以使用this recipe来重复字符串直到指定长度:
def repeat_to_length(s, wanted):
return (s * (wanted // len(s) + 1))[:wanted]
df['label'] = list(repeat_to_length('abc', len(df.index)))
print(df)
col1 col2 label
0 Jack Jill a
1 Michael Micah b
2 Derrick Daliah c
3 Martin Martha a
4 Patrick Patricia b
5 Dennis Denise c