如何根据DataFrame列值将对应列转为列表或嵌套列表?
解决方案
可以通过定义带逻辑判断的处理函数,结合pandas的apply方法实现需求:
- 定义处理函数,根据
Consideration_level的值分支处理Consideration_value:
def format_value(row): level = row['Consideration_level'] value = row['Consideration_value'] if level == 'Car_ID': # 转为单个元素的列表 return [value] else: # 按逗号分割后,每个元素嵌套成单独列表,同时去除元素前后空格 return [[item.strip()] for item in value.split(',')]
- 将函数应用到DataFrame的每一行:
import pandas as pd # 构造示例DataFrame data = { 'Consideration_level': ['Car_ID', 'Car_ID', 'Car_type, Location', 'Car_Color, Location'], 'Consideration_value': ['00111', '00222', 'Jeep, NYC', 'Pink, BOS'] } df = pd.DataFrame(data) # 应用处理函数,直接替换原列(也可新建列保留原始数据) df['Consideration_value'] = df.apply(format_value, axis=1) print(df)
运行后输出的结果将完全符合需求:
Consideration_level Consideration_value 0 Car_ID [00111] 1 Car_ID [00222] 2 Car_type, Location [[Jeep], [NYC]] 3 Car_Color, Location [[Pink], [BOS]]
细节说明
- 使用
strip()是为了处理分割后元素的前后空格(比如'Jeep, NYC'分割后' NYC'的空格),避免列表中出现带多余空格的元素 - 如果需要保留原始数据,可新建一列存储格式化后的值,比如
df['Formatted_Value'] = df.apply(format_value, axis=1)
内容的提问来源于stack exchange,提问作者Nicole L
相关产品推荐
相关产品推荐

