构建Pandas DataFrame时如何指定默认布尔值为False
如何直接初始化全为False的布尔型Pandas DataFrame?
我需要创建一个所有初始值都是False的布尔型Pandas DataFrame,但使用常规构造方式时,默认会把值初始化为True:
import pandas as pd from datetime import date date_start = date(2022, 1, 1) date_end = date(2022, 8, 24) valid_dates = pd.bdate_range(date_start, date_end) cols = range(0,4) df = pd.DataFrame(index=valid_dates, columns=cols, dtype='bool')
我试过用df.replace(df, False)批量替换值,但当列数较多(实际场景有500列左右)时,这种方法耗时明显增加。有没有办法直接把DataFrame初始化为全False?
高效解决方案
借助NumPy的np.full()函数可以直接生成指定形状的全False布尔数组,再将其作为数据传入DataFrame构造函数,就能高效完成初始化。示例代码如下:
import pandas as pd import numpy as np from datetime import date date_start = date(2022, 1, 2) date_end = date(2022, 8, 24) valid_dates = pd.bdate_range(date_start, date_end) cols = range(0, 500) # 生成对应形状的全False数组,再构造DataFrame df = pd.DataFrame(data=np.full((len(valid_dates), len(cols)), False), index=valid_dates, columns=cols) print(df)
感谢@ivanp提供的解决方案。
内容的提问来源于stack exchange,提问作者ajoseps
相关产品推荐
相关产品推荐

