说我有一个pandas数据帧具有以下结构:
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中每个名字的每个字符(所以我得到a,b,c代表杰克,a,b,c代表迈克尔等)
如果我可以在字符列表完成后重复字符重复,如我的示例输出中所示,我可以将它们附加到列表中,然后只需:
df['label'] = characters_list_for_df
任何帮助都会很棒!
你可以使用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