能否为Pandas DataFrame添加无默认值映射的指定空列?
解决方案
当然可以实现,核心是在空DataFrame上直接创建列结构,不填充任何默认值。有两种常用方法:
方法一:用reindex一次性指定所有需要的列
先整理出所有必须包含的列名,然后用reindex方法重置DataFrame的列,这样不管原有列是什么,最终都会保留指定的列,且因为DataFrame是空的,不会有任何默认值填充:
def _trades(self, trades_df): trades_df = trades_df.rename(columns={'timestamp': 'trade_timestamp'}) trades_df['publication_timestamp'] = trades_df['trade_timestamp'] trades_df['trade_id'] = trades_df['trade_id'].astype(str) trades_df['printable'] = True # 定义所有必须包含的列 required_columns = [ 'trade_timestamp', 'publication_timestamp', 'trade_id', 'printable', 'trade_type', 'implied' ] # 重置列,添加缺失的空列 trades_df = trades_df.reindex(columns=required_columns) return trades_df
方法二:单独添加列并指定数据类型
如果只需要添加特定的几列,直接给DataFrame添加列并赋值一个指定数据类型的空Series,这样列会被创建,但不会填充任何默认值:
import pandas as pd def _trades(self, trades_df): trades_df = trades_df.rename(columns={'timestamp': 'trade_timestamp'}) trades_df['publication_timestamp'] = trades_df['trade_timestamp'] trades_df['trade_id'] = trades_df['trade_id'].astype(str) trades_df['printable'] = True # 添加trade_type列,指定object类型(可根据实际需求调整) trades_df['trade_type'] = pd.Series(dtype='object') # 添加implied列,指定数值类型(比如float64,可根据实际需求调整) trades_df['implied'] = pd.Series(dtype='float64') return trades_df
说明
因为你的DataFrame是空的(没有行数据),这两种方法都只会创建列结构,不会生成任何默认值(比如0、None/NaN)——毕竟没有行可以填充,最终得到的就是仅包含指定列的空DataFrame,完全符合你的需求。
内容的提问来源于stack exchange,提问作者user21158996
相关产品推荐
相关产品推荐

