迭代地将字符[ac]赋给数据帧中的行,直到列长度结束

2024-10-01 05:01:20 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个具有以下结构的数据帧:

      col1      col2
0     Jack      Jill
1  Michael     Micah
2  Derrick    Daliah
3   Martin    Martha
4  Patrick  Patricia
5   Dennis    Denise    

我有一个字符列表:

characters = ['a', 'b', 'c']

我想在dataframe中创建一个新列,因此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

我想我可以通过同时遍历两个列表来做到这一点,但是zip只迭代到最短列表的长度:

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代表Jack,a,b,c代表Michael,等等)

如果我可以在字符列表完成后对字符重复迭代,如我的示例输出中所示,我可以将它们附加到列表中,然后只执行以下操作:

df['label'] = characters_list_for_df
任何帮助都太好了!你知道吗


Tags: indf列表for字符结构micahcol2
1条回答
网友
1楼 · 发布于 2024-10-01 05:01:20

可以使用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

相关问题 更多 >