我尝试使用 pandas.DataFrame.replace()通过以下代码填充框架中的空字符串。
main_datasets = [train_data,test_data,alt_data1,alt_data2]
for data in main_datasets:
for x in data:
if type(x) == 'int':
x.fillna(x.median(), inplace = True)
elif type(x) == 'float':
x.fillna(x.median(), inplace = True)
else:
x.replace(to_replace = None, value = 'N/A', inplace = True)
但是,尽管使用了关键字值的字符或数字并删除了关键字名称,我仍然会收到以下异常:
TypeError: replace() takes no keyword arguments
为什么这个错误来自" 值=' N / A?' "
以下是某些字段的特定示例(以逗号分隔):
12123423,0,M,Y,120432.5
12654423,1,F,N,80432.5
12123423,0,M,Y,120432.5
12123423,0,M,Y,120432.5
答案 0 :(得分:2)
您正在尝试使用pandas.DataFrame.replace()
方法,但实际上您正在使用string.replace
方法。
我怀疑所有这一切都会失败,但是你首先在非int
而不是float
案件中遇到失败。如果x是int,则它不是DataFrame,并且不具有.fillna
方法。类似地,字符串具有Python的替换方法,但具有不同的函数签名。
df.replace() vs string.replace()
str.replace(old, new[, max])
vs
DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad', axis=None)
我还怀疑你正在尝试使用Series.dtype而不是输入。
答案 1 :(得分:0)
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html
正如评论中所提到的那样
x.replace(None, 'N/A', True)