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

如何移除DataFrame中的None值并将a至f列转换为列表

解决方法:移除DataFrame中的None值并转换为指定列表格式

步骤说明

针对DataFrame的每行,提取a到f列的所有子列表,过滤掉包含None的子列表,最后将剩余子列表合并为一个新列表。

示例代码

首先构造与你提供一致的示例DataFrame:

import pandas as pd

data = {
    'emp_no': [11390, 11395, 11397, 11522, 11525],
    'a': [[1, 28.4], [1, 31.4], [1, 33.0], [1, 34.0], [1, 32.7]],
    'b': [[7, 32.2], [7, 32.8], [7, 33.1], [7, 32.4], [7, 31.9]],
    'c': [[7, 31.3], [7, None], [7, 31.5], [7, 32.6], [7, 32.0]],
    'd': [[28, 40.7], [28, 37.3], [28, None], [28, 45.4], [28, None]],
    'e': [[28, 40.0], [28, 39.2], [28, 40.4], [28, 45.9], [28, 44.4]],
    'f': [[28, 39.6], [28, None], [28, 41.0], [28, 46.9], [28, 46.1]],
    'id': ['nhvm657mjhgmjhm', 'hjgj6hgjgghjjh', 'fjyj676hjhjhg', '65hjhgjghj766', 'ftghjy6757hjh']
}
df = pd.DataFrame(data)

然后编写处理逻辑:

# 定义每行的处理函数
def process_row(row):
    # 提取a到f列的子列表集合
    cols = row[['a', 'b', 'c', 'd', 'e', 'f']].tolist()
    # 过滤掉包含None的子列表
    filtered_list = [lst for lst in cols if None not in lst]
    return filtered_list

# 对每行应用处理函数,生成结果列表
result = df.apply(process_row, axis=1).tolist()

# 按期望格式输出
for idx, lst in enumerate(result):
    print(f'df[{idx}] = {lst}')

运行结果

df[0] = [[1, 28.4], [7, 32.2], [7, 31.3], [28, 40.7], [28, 40.0], [28, 39.6]]
df[1] = [[1, 31.4], [7, 32.8], [28, 37.3], [28, 39.2]]
df[2] = [[1, 33.0], [7, 33.1], [7, 31.5], [28, 40.4], [28, 41.0]]
df[3] = [[1, 34.0], [7, 32.4], [7, 32.6], [28, 45.4], [28, 45.9], [28, 46.9]]
df[4] = [[1, 32.7], [7, 31.9], [7, 32.0], [28, 44.4], [28, 46.1]]

关键说明

  • df.apply(process_row, axis=1)指定按行处理数据,确保每一行的a-f列都能被单独处理
  • 列表推导式[lst for lst in cols if None not in lst]直接过滤掉包含None的子列表,保证最终结果符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:45:45