如何在Pandas列中按指定条件移除列表首元素
解决方案
可以通过自定义函数结合Pandas的apply方法实现需求,具体代码如下:
import pandas as pd data = {'id': ['001', '002', '003'], 'address': [['William J. Clare', '290 Valley Dr.', 'Casper, WY 82604','USA, United States'], ['1180 Shelard Tower', 'Minneapolis, MN 55426', 'USA, United States'], ['William N. Barnard', '145 S. Durbin', 'Casper, WY 82601', 'USA, United States']] } df = pd.DataFrame(data) # 定义处理单个地址列表的函数 def clean_address(address_list): # 检查首元素是否包含数字 has_digit = any(char.isdigit() for char in address_list[0]) # 不含数字则移除首元素,否则保留原列表 return address_list[1:] if not has_digit else address_list # 批量处理address列 df['address'] = df['address'].apply(clean_address) # 输出目标格式的结果 print(df['address'].tolist())
代码说明
clean_address函数:针对单个地址列表,遍历首元素的字符判断是否包含数字。如果不含数字(判定为姓名),就返回去掉首元素的子列表;如果包含数字则直接返回原列表。df['address'].apply(clean_address):将自定义函数批量应用到address列的每一个元素上,完成所有地址的清洗。tolist():把处理后的Pandas列转换成你需要的列表格式。
运行代码后会输出期望结果:
[['290 Valley Dr.', 'Casper, WY 82604','USA, United States'], ['1180 Shelard Tower', 'Minneapolis, MN 55426', 'USA, United States'], ['145 S. Durbin', 'Casper, WY 82601', 'USA, United States']]
内容的提问来源于stack exchange,提问作者Sushmitha
相关产品推荐
相关产品推荐

