Python:比较列表中的最后一个元素

我正在处理一个包含字符串列表的列,并且想比较每行中的最后一个元素。如果最终元素不匹配,我想创建一个新变量,将第一个和最后一个元素连接起来,如下所示: element[0].element[-1]


如果它们确实匹配,我想通过在列表中附加下一个元素来区分它们: element[0].element[-2].element[-1]


我已将此专栏作为其原始格式的列表。这是数据框中原始变量的片段pandas:


apple.banana.pear

apple.starfruit.grape

apple.kiwi.orange.pear

apple.durian.coconut

Name: original, Length: 4, dtype: string


mylist = df['original'].apply(lambda x: x.split('.'))

我目前的名单:


[apple, banana, pear]

[apple, starfruit, grape]

[apple, kiwi, orange, pear]

[apple, durian, coconut]

期望的输出:


apple.banana.pear

apple.grape

apple.orange.pear

apple.coconut

我不确定将其放入列表是否是最佳选择,但我认为将每个部分作为一个元素进行访问会更容易。情况可能并非如此。这是我试过的:


l = 0

j = l + 1

for l in mylist:

    for j in mylist:

        if mylist[l][-1] == mylist[j][-1]:

            newvar = mylist[l][0] + '.' + mylist[l][-2] + '.' + mylist[l][-1]

        else:

            newvar = mylist[l][0] + '.' + mylist[l][-1]


KeyError: "None of [Index(['apple', 'banana', 'pear'], dtype='object')] are in the [index]"

非常感谢任何建议。


阿波罗的战车
浏览 106回答 1
1回答

长风秋雁

我们可以做的s=df.original.str.split('.')df['new']=np.where(s.str[-1].duplicated(keep=False),                   s.str[0]+'.'+s.str[-2]+'.'+s.str[-1],                   s.str[0]+'.'+s.str[-1])dfOut[47]:                  original                new0       apple.banana.pear  apple.banana.pear1   apple.starfruit.grape        apple.grape2  apple.kiwi.orange.pear  apple.orange.pear3    apple.durian.coconut      apple.coconut
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python