【发布时间】:2021-01-03 16:29:21
【问题描述】:
我有一个熊猫脚本。
import pandas as pd
data = pd.read_csv('sample.csv',delimiter=',')
def mapping(df):
#work of data mapping
for column_name, column in df.transpose().iterrows():
df.rename(columns ={'first name' : 'FNAME', 'secret': 'CODE'}, inplace = True)
df.rename(columns ={'alias' : 'FNAME', 'code': 'CODE'}, inplace = True)
df.rename(columns ={'initial name' : 'FNAME', 'id': 'CODE'}, inplace = True)
final_df = mapping(data)
#If the code is greater than 12 digits, leave it blank
final_df.loc[final_df['CODE'].astype(str).str.len() >12, 'CODE']= ''
我得到的错误是:
final_df.loc[final_df['CODE'].astype(str).str.len() >12, 'CODE']= ''
AttributeError: 'NoneType' object has no attribute 'loc'
有什么解决办法吗?
【问题讨论】:
-
检查
type(final_df)?看起来问题出在函数中,当您通过数据框mapping(data)调用它时返回None? -
当我只返回 mapping(data) 时,它会显示数据,但是当 final_df = mapping(data) ,print(final_df) 它返回 None
-
print(type(mapping(data)))的结果是什么? -
结果是 NoneType@anky
-
从每一行中删除
inplace=True。将df.rename(columns ={'first name' : 'FNAME', 'secret': 'CODE'}, inplace = True)更改为df=df.rename(columns ={'first name' : 'FNAME', 'secret': 'CODE'})对所有 3 行执行此操作(尽管您可以将所有重命名组合在一个字典中)并将return df添加到函数的最后一行。
标签: python python-3.x pandas dataframe numpy