为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿波罗的战车 2023-01-04 16:50:24
我正在处理一个包含字符串列表的列,并且想比较每行中的最后一个元素。如果最终元素不匹配,我想创建一个新变量,将第一个和最后一个元素连接起来,如下所示: element[0].element[-1]如果它们确实匹配,我想通过在列表中附加下一个元素来区分它们: element[0].element[-2].element[-1]我已将此专栏作为其原始格式的列表。这是数据框中原始变量的片段pandas:apple.banana.pearapple.starfruit.grapeapple.kiwi.orange.pearapple.durian.coconutName: original, Length: 4, dtype: stringmylist = df['original'].apply(lambda x: x.split('.'))我目前的名单:[apple, banana, pear][apple, starfruit, grape][apple, kiwi, orange, pear][apple, durian, coconut]期望的输出:apple.banana.pearapple.grapeapple.orange.pearapple.coconut我不确定将其放入列表是否是最佳选择,但我认为将每个部分作为一个元素进行访问会更容易。情况可能并非如此。这是我试过的:l = 0j = l + 1for 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]"非常感谢任何建议。
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

我们可以做的


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])

df

Out[47]: 

                 original                new

0       apple.banana.pear  apple.banana.pear

1   apple.starfruit.grape        apple.grape

2  apple.kiwi.orange.pear  apple.orange.pear

3    apple.durian.coconut      apple.coconut


查看完整回答
反对 回复 2023-01-04
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信