如何使用python pandas的其他

时间:2017-05-24 12:56:35

标签: python pandas

我有以下命令:

df1['parent'] = df1['x'].map(lambda x: x.split('by')[1])

我得到了:

IndexError: list index out of range

对于列中的某些值,在“by”之后没有任何内容,我怎么能做类似的事情:如果之后没有任何内容,那么写“”

1 个答案:

答案 0 :(得分:2)

str.splitindexing with str一起使用,如果没有值,则返回NaN,然后添加fillna

df1 = pd.DataFrame({'x':['ddbytrr','df']})
print (df1)
         x
0  ddbytrr
1       df

df1['parent'] = df1['x'].str.split('by').str[1].fillna('')
print (df1)
         x parent
0  ddbytrr    trr
1       df

mapif-else的解决方案,但仅当列中没有NaN个值时才有效:

df1['parent'] = df1['x'].map(lambda x: x.split('by')[1] if len(x.split('by')) > 1 else '')
print (df1)
         x parent
0  ddbytrr    trr
1       df 

numpy.where解决方案相同:

splitted = df1['x'].str.split('by')
df1['parent'] = np.where(splitted.str.len() > 1, splitted.str[1], '')
print (df1)
         x parent
0  ddbytrr    trr
1       df