我有一个这样的数据框:
item_id
26--_-23
24--_-65
12
24--_-54
24
66
23
当我说
时df['item_id'] = df['item_id'].map(lambda x: x.split('--_-')[0])
我明白了:
item_id
26
24
12
24
24
66
23
哪个好。 但是当我说:
df['par_id'] = df['item_id'].map(lambda x: x.split('--_-')[1])
我收到以下错误:
df2['item_id'] = df2['item_id'].map(lambda x: x.split('--_-')[1])
IndexError: list index out of range
然后我决定尝试:
def split(x):
try: z = x.split('--_-')[1]
except: z = None
df2['par_id'] = df2['item_id'].apply(split)
但在这种情况下,我得到一个空的par_id列 我知道,这可能是一个非常微不足道的问题,但这里的问题是什么?
答案 0 :(得分:1)
您可以使用pandas函数str.split
并按str
按位置选择列表 - 如果值不存在则获取NaN
s:
df['item_id'] = df['item_id'].str.split('--_-').str[1]
print (df)
item_id
0 23
1 65
2 NaN
3 54
4 NaN
5 NaN
6 NaN
详情:
print (df['item_id'].str.split('--_-'))
0 [26, 23]
1 [24, 65]
2 [12]
3 [24, 54]
4 [24]
5 [66]
6 [23]
Name: item_id, dtype: object
答案 1 :(得分:0)
分割空间,切掉第一项,使用逗号连接:
useState