'module'对象没有属性'isna'

时间:2018-01-18 02:45:14

标签: python python-2.7

我有一个名为batch_df的df,我在df中添加了'as_percentage'。如果小时是Nan,那么将as_percentage设置为0.代码在PyCharm中正常运行但是当我在终端上运行时,我收到了这个错误:请帮助!

  

追踪(最近一次呼叫最后一次):

     

文件“/Users/vic_ong/dev/resource-management/generateBatch.py​​”,第166行,       main()的

     

文件“/Users/vic_ong/dev/resource-management/generateBatch.py​​”,第51行,主要

     

batch_df.loc [pd.isna(batch_df ['hours'])== False,'as_percentage'] = 0   AttributeError:'module'对象没有属性'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示例:

name hours as_percentage vic Nan 1 vic1 Nan 1

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

pandas.isna = pandas.isnull为我解决了这个问题