反复向熊猫数据框中的行分配字符[a-c],直到列长结束

时间:2018-09-05 18:44:46

标签: python string python-3.x pandas series

说我有一个具有以下结构的熊猫数据框:

      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

任何帮助都会很棒!

1 个答案:

答案 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