如何从列表类型列提取数据并在另一DataFrame中生成新列
从列表列提取数据生成DataFrame新列的解决方法
参考数据
先把源数据整理成结构化表格:
| Product | Price | Quantity | Group |
|---|---|---|---|
| Tv | 20 | 1 | 1 |
| Car | 300 | 1 | 4 |
| Bike | 40 | 2 | 2 |
| Laptop | 80 | 1 | 3 |
| PS4 | 90 | 1 | 2 |
具体实现(以pandas为例)
假设你有一个存储对应值的列表/映射关系(比如Group字段对应的类别列表),下面是两种常见的提取生成新列的方式:
场景1:用字典映射对应关系
如果存储值是键值对形式(比如Group编号对应类别名称),直接用map方法快速生成新列:
import pandas as pd # 构建源DataFrame data = { 'Product': ['Tv', 'Car', 'Bike', 'Laptop', 'PS4'], 'Price': [20, 300, 40, 80, 90], 'Quantity': [1, 1, 2, 1, 1], 'Group': [1, 4, 2, 3, 2] } df = pd.DataFrame(data) # 存储Group对应的类别映射 group_mapping = {1: '家电', 2: '出行', 3: '数码', 4: '代步'} # 生成新列并添加到原DataFrame df['Category'] = df['Group'].map(group_mapping) # 若需要单独生成新的DataFrame new_df = df[['Product', 'Category']].copy()
执行后,新DataFramenew_df的内容如下:
| Product | Category |
|---|---|
| Tv | 家电 |
| Car | 代步 |
| Bike | 出行 |
| Laptop | 数码 |
| PS4 | 出行 |
场景2:用列表索引对应关系
如果存储值是纯列表形式,Group值对应列表的索引(需注意索引偏移),用apply方法提取:
import pandas as pd # 源DataFrame同上 df = pd.DataFrame(data) # 存储类别的列表,索引0对应Group1,索引1对应Group2,以此类推 group_list = ['家电', '出行', '数码', '代步'] # 通过索引匹配生成新列 df['Category'] = df['Group'].apply(lambda x: group_list[x-1])
这个方法和场景1的输出结果完全一致。
内容的提问来源于stack exchange,提问作者Eswar
相关产品推荐
相关产品推荐

