You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理DataFrame嵌套列表:提取子列表首尾元素并展平

处理嵌套列表DataFrame:保留子列表首尾元素并展平

刚学Python遇到多层嵌套的DataFrame确实容易头大,咱们一步步来拆解这个需求:你需要把names列里的每一层嵌套列表,先提取最内层子列表的首尾元素拼成字符串,再把这些字符串整理成新的列表。

第一步:先明确需求对应的逻辑

拿你的示例数据来说:

  • 原数据里的第一个元素 [['harry','james','potter'],['Albus','Dumbledore']]
    • 第一个子列表['harry','james','potter']取首尾→'harry potter'
    • 第二个子列表['Albus','Dumbledore']取首尾→'Albus Dumbledore'
    • 最终整理成['harry potter','Albus Dumbledore']

第二步:写一个处理单个嵌套列表的函数

我们可以先定义一个小函数,专门处理每一行的嵌套列表:

def process_nested_list(nested_item):
    result = []
    # 遍历每个中间层的列表(比如每个[name组])
    for sub_list in nested_item:
        # 取子列表的第一个和最后一个元素,用空格连接
        first_last = f"{sub_list[0]} {sub_list[-1]}"
        result.append(first_last)
    return result

这里用sub_list[-1]取最后一个元素,不管子列表长度是2还是3都能用,非常灵活~

第三步:用pandas的apply方法批量处理整列

接下来就可以把这个函数应用到DataFrame的names列上:

import pandas as pd

# 你的示例DataFrame
df1 = pd.DataFrame({'names':[[['harry','james','potter'],['Albus','Dumbledore']],[['Peter','D.','Griffin'],['some','nice','string']]]})

# 处理整列,生成新的结果列
df1['processed_names'] = df1['names'].apply(process_nested_list)

# 查看结果
print(df1['processed_names'])

运行结果

你会得到完全符合预期的输出:

0    [harry potter, Albus Dumbledore]
1      [Peter Griffin, some string]
Name: processed_names, dtype: object

额外小提示

如果想直接替换原列,直接写df1['names'] = df1['names'].apply(process_nested_list)就可以了,不用新建列。另外,要是你想把字符串的首字母大写(比如示例里的Harry Potter),可以把拼接的那行改成:

first_last = f"{sub_list[0].capitalize()} {sub_list[-1].capitalize()}"

这样就能得到首字母大写的规范结果啦~

内容的提问来源于stack exchange,提问作者user11638654

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:29:37