我有一个包含由数字列表组成的列的数据框:
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?
