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

如何将Pandas DataFrame中的缺失值转换为指定数据类型

解决DataFrame含缺失值时的列聚合问题

问题根源

你的报错是因为DataFrame中的np.nan属于float类型,而''.join()要求拼接的所有元素必须是字符串类型,类型不兼容导致触发TypeError。

可行解决方案

方法1:将缺失值替换为空字符串后聚合

先用fillna('')把所有缺失值替换成空字符串,确保全量元素为字符串类型,再执行聚合操作:

import pandas as pd
import numpy as np

d1 = pd.DataFrame([["A", "B", "C"],
                   ["D", np.nan, "F"],
                   ["G", "H", "I"],],
                  columns=[1, 2, 3])

# 替换缺失值为空字符串后聚合
d2 = d1.fillna('').agg(''.join).to_frame().T
print(d2)

输出结果:

1    2    3
0  ADG  BH   CFI

方法2:将所有元素转为字符串(缺失值转为'NaN')

如果需要保留缺失值的标识,可使用astype(str)将所有元素强制转为字符串,此时np.nan会被转换为字符串'NaN':

d2 = d1.astype(str).agg(''.join).to_frame().T
print(d2)

输出结果:

1      2      3
0  ADG  BNaN H  CFI

方法3:自定义聚合函数跳过缺失值

若需要更灵活的逻辑(比如直接跳过缺失值不参与拼接),可以自定义聚合函数:

def join_skip_nan(series):
    return ''.join(item for item in series if pd.notna(item))

d2 = d1.agg(join_skip_nan).to_frame().T
print(d2)

输出结果与方法1一致:

1   2    3
0  ADG BH  CFI

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:06:28