我正在尝试从数据帧中的字符串索引一个字母并将其放置在新列中。
d = {'col1': ['SYDYGENESD',
'SSYDYGENE'],
'col2': ['A', 'B']}
d = pd.DataFrame(data=d)
这是我试图做的,但是它只返回最低的(第一个)'Y'
而不返回其他的。
d['new_col'] = d['col1'].str.index('Y')
我也尝试过:
d['new_col'] = d['col1'].str.rindex('Y')
但它只会返回最高的索引。我可以在熊猫里做类似这样的代码吗?因此,它返回'Y'
in中所有索引的列表col1
另外,我尝试了
def ind(my_list, desired_element):
return [index for index, element in enumerate(my_list) if element == desired_element]
d['new_col'] = d.apply(lambda x: ind(d['col1'],'Y'), axis=1)
所需的数据帧是:
target = {'col1': ['SYDYGENESD', 'SSYDYGENE'],
'col2': ['A','B'],
'col3':[[1, 3],[2, 4]]}
target = pd.DataFrame(data=target)
您是如此亲密,我认为唯一出错的是您的apply
语法:
您可以定义一个函数来检测"Y"
字符串的索引,然后将其应用于col1
:
def duplicates(lst, item):
return [i for i, x in enumerate(lst) if x == item]
d['col3'] = d['col1'].apply(lambda x: duplicates(x, "Y"))
# col1 col2 col3
# 0 SYDYGENESD A [1, 3]
# 1 SSYDYGENE B [2, 4]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句