Pandas拆分并选择第二个元素

时间:2017-12-23 12:23:55

标签: python pandas

我有一个这样的数据框:

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列 我知道,这可能是一个非常微不足道的问题,但这里的问题是什么?

2 个答案:

答案 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