Skip to main content
 首页 » 编程设计

python之从一列列表中的每个列表中获取第一个元素

2025年05月04日21kuangbin

我有一个包含由数字列表组成的列的数据框:

idx codes       new_column 
0   [12,18,5] 
1   [22,15] 
2   [4] 
3   [15,1] 

如何向包含代码列的第一个列表条目的数据框添加新列:

idx codes     new_column 
0   [12,18,5]  12 
1   [22,15]    22 
2   [4]         4 
3   [15,1]     15 
 
I tried: 
    df['new_column']=df['codes'][0] 
 
However, that didn't work. 

请您参考如下方法:

最简单的方法是使用str.get

# df['new_column'] = df['codes'].str.get(0) 
df['new_column'] = df['codes'].str[0] 

但是,如果没有 NaN,我会建议对速度进行列表理解:

df['new_column'] = [l[0] for l in df['codes']] 

如果列表可以为空,你可以这样做:

df['new_column'] = [l[0] if len(l) > 0 else np.nan for l in df['codes']] 

要使用列表推导式处理 NaN,您可以使用 loc 进行子集化和赋值。

m = df['codes'].notna() 
df.loc[m, 'new_column'] = [ 
    l[0] if len(l) > 0 else np.nan for l in df.loc[m, 'codes']] 

强制性的为什么列表比较值得链接:For loops with pandas - When should I care?