将字符[a-c]迭代地分配给Pandas Dataframe中的行,直到列长度结束

问题描述 投票:2回答:1

说我有一个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

任何帮助都会很棒!

python string python-3.x pandas series
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.