Skip to main content
 首页 » 编程设计

python之“模块”对象没有属性 'isna'

2025年05月04日14java哥

我有一个名为 batch_df 的 df,我在 df 中添加了“as_percentage”。如果 hours 是 Nan,则将 as_percentage 设置为 0。代码在 PyCharm 中运行良好,但是当我在终端上运行时,出现此错误:请帮忙!

Traceback (most recent call last):

File "/Users/vic_ong/dev/resource-management/generateBatch.py", line 166, in main()

File "/Users/vic_ong/dev/resource-management/generateBatch.py", line 51, in main

batch_df.loc[pd.isna(batch_df['hours']) == False, 'as_percentage'] = 0 AttributeError: 'module' object has no attribute 'isna'

编辑——我的代码如下所示:

#!/usr/bin/env python2 
import lib 
import pandas as pd 
import datetime 
import os 
pd.set_option('expand_frame_repr', False) 
# get directories 
batchInputDir = '/Users/vic_ong/dev/resource-management/data/input/batchUpload' 
 
 
def main(): 
# start timer 
start_time = datetime.datetime.now() 
 
# walk into every csv file in batchUpload and concatenate them into one df 
list_ = [] 
for root, dirs, files in os.walk(batchInputDir): 
    for file in files: 
        if file.endswith('.csv'): 
            df = pd.read_csv(os.path.join(batchInputDir, file), index_col=None, header=0) 
            list_.append(df) 
batch_df = pd.concat(list_) 
batch_df = batch_df.dropna(how='all') 
batch_df.reset_index(drop=True, inplace=True) 
# clean data frame 
# rename to standardized column names 
batch_df.rename(columns={'Resource Name': 'name', 
                         'Hours': 'hours'}, 
                inplace=True) 
# determine if value given was a percentage 
batch_df['as_percentage'] = 1 
batch_df.loc[pd.isna(batch_df['hours']) == False, 'as_percentage'] = 0 
print batch_df.head 
 
if __name__ == '__main__': 
main() 

batch_df 样本:

将小时命名为_percentage 维南 1 vic1 南 1

请您参考如下方法:

The isna alias for isnull was only added in version 0.21 (0.22 是截至 2018 年 1 月的最新版本);在 0.20 及更早版本中,它不存在;您必须改用旧的(且仍受支持)isnull 名称。更新您的 pandas 安装,或使用旧名称。