我正在使用包含字符串列表的列,并且想比较每一行中的最后一个元素。如果最后一个元素不匹配,我想创建一个新变量,将第一个元素和最后一个元素连接起来,如下所示: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]"
任何建议,不胜感激。
我们能做的
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句