从DataFrame列表列提取元素:新增first与second_to_last列需求
如何为包含列表的DataFrame新增首元素和倒数第二个元素列?
这是个很典型的Pandas列表字段处理场景,咱们直接上可运行的解决方案,一步到位:
首先,先构造你提供的示例DataFrame(方便你直接测试):
import pandas as pd # 初始化原DataFrame df = pd.DataFrame({ 'id': ['001', '002', '003', '004'], 'sequence': [['A', 'B', 'C', 'E', 'F'], ['A', 'C'], [], ['D']] })
1. 新增first列(取列表首个元素)
我们用apply()结合匿名函数,判断列表长度,空列表就返回None:
df['first'] = df['sequence'].apply(lambda x: x[0] if len(x) > 0 else None)
2. 新增second_to_last列(取列表倒数第二个元素)
同样用apply(),这次要判断列表长度是否≥2(避免索引越界),长度不够就返回None:
df['second_to_last'] = df['sequence'].apply(lambda x: x[-2] if len(x) >= 2 else None)
最终结果
运行完上面的代码后,打印df就能得到你想要的结果:
id sequence first second_to_last 0 001 [A, B, C, E, F] A E 1 002 [A, C] A A 2 003 [] None None 3 004 [D] D None
补充说明:如果想用更简洁的Pandas原生方法,也可以用str访问器,比如df['sequence'].str[0]会自动给空列表返回NaN,再用fillna(None)转成None;不过apply+lambda的方式逻辑更直观,新手也容易理解和修改。
内容的提问来源于stack exchange,提问作者Edamame
相关产品推荐
相关产品推荐

