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

如何将DataFrame每行非空值前置、空值后置并导出CSV?

如何将Pandas DataFrame每行非空值前置、空值后置并导出CSV

问题背景

我需要处理一个Pandas DataFrame,实现每行的非空值移到前面、空值(NaN)移到后面,最后把处理结果导出成CSV文件。

现有代码:

df = pd.read_csv('dataset_two.csv', header=None) 
print(df.head())
print("___ ___ ___ ___ ___ ___ ___ ___ ___")

原始数据输出:

0  Juice  Nachos   Tortilla   Cheese  Eggs  Banana  Milk  Bread  Butter
1  Juice     NaN   Tortilla   Cheese  Eggs     NaN  Milk    NaN  Butter
2    NaN     NaN   Tortilla  Cheese   Eggs     NaN   NaN  Bread  Butter
3    NaN  Nachos        NaN      NaN   NaN  Banana  Milk  Bread     NaN
4  Juice  Nachos  Tortilla   Cheese   Eggs  Banana  Milk  Bread  Butter
___ ___ ___ ___ ___ ___ ___ ___ ___

期望导出的CSV格式:

Juice,Nachos,Tortilla,Cheese,Eggs,Banana,Milk,Bread,Butter
Juice,Tortilla,Cheese,Eggs,Milk,Butter
Tortilla,Cheese,Eggs,Bread,Butter
Nachos,Banana,Milk,Bread
Juice,Nachos,Tortilla,Cheese,Eggs,Banana,Milk,Bread,Butter

解决方案

以下是两种实现方式,分别对应不同的输出需求:

方式一:保留所有列(空值后置)

如果需要保留原有的列数,仅将非空值移到前面、空值放在后面,可使用以下代码:

import pandas as pd

# 读取原始数据集
df = pd.read_csv('dataset_two.csv', header=None)

# 定义行处理函数:拆分非空值与空值后拼接
def rearrange_row(row):
    non_null_vals = row[pd.notna(row)].tolist()
    null_vals = row[pd.isna(row)].tolist()
    return non_null_vals + null_vals

# 逐行应用处理逻辑,生成新DataFrame
processed_df = df.apply(rearrange_row, axis=1).apply(pd.Series)

# 导出CSV,不写入行索引和表头
processed_df.to_csv('processed_full.csv', index=False, header=False)

方式二:仅保留非空值(无末尾空字段)

如果希望导出的CSV每行只包含非空值(完全匹配你给出的期望输出),可以直接迭代每行生成字符串写入文件:

import pandas as pd

df = pd.read_csv('dataset_two.csv', header=None)

# 打开输出文件并写入处理后的数据
with open('processed_clean.csv', 'w') as output_file:
    for _, row in df.iterrows():
        # 过滤非空值并转为逗号分隔的字符串
        cleaned_row = ','.join(row[pd.notna(row)].astype(str))
        output_file.write(f"{cleaned_row}\n")

关键说明

  • pd.notna(row)用于精准筛选每行的非空值,确保只保留有效数据;
  • 方式一适合需要保留原列结构的场景,处理后仍保持相同的列数;
  • 方式二直接生成无冗余空字段的行内容,完全符合你给出的期望输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:36:01