我有一个带有nans的数据框:
>>>df.head()
Out[1]:
JPM US SMALLER COMPANIES C ACC
1990-01-02 NaN
1990-01-03 NaN
1990-01-04 NaN
1990-01-05 NaN
1990-01-08 NaN
我有另一个包含值的数据框:
>>>t.head()
Out[1]:
1990-01-02 51.95
1990-01-03 52.63
1990-01-04 53.04
1990-01-05 52.07
1990-01-08 51.73
Name: JPM US SMALLER COMPANIES C ACC, dtype: float64
不幸的是,df.fillna似乎不适合我:
>>>df.fillna( t ).head()
Out[1]:
JPM US SMALLER COMPANIES C ACC
1990-01-02 NaN
1990-01-03 NaN
1990-01-04 NaN
1990-01-05 NaN
1990-01-08 NaN
[5 rows x 1 columns]
为什么会这样?我在熊猫0.13.1
答案 0 :(得分:32)
您需要inplace
df[1].fillna(0, inplace=True)
答案 1 :(得分:1)
或者:
df = df.replace(np.nan, 0)
#或您认为合适的任何其他值
df.replace(np.nan, 0) 或 df.fillna(0) 当我在 Na 操作之后立即应用某些 str.replace() 操作时让我失望.. 所以要注意你的命令顺序 - > 首先 str.replace() 比 fillna()
答案 2 :(得分:0)
您需要分配值df = df.fillna( t )
答案 3 :(得分:0)
您有两个选择:
1)特定于每列
df = df.fillna(0)
2)对于整个数据框
var jsonData = JSON.parse(responseBody);
var old = pm.environment.get("responseData");
old = JSON.parse(old);
// filter jsonData if needed
old.push(jsonData);
old = JSON.stringify(old);
pm.environment.set("responseData", old);
var page = parseInt(pm.environment.get("page"));
var pageSize = parseInt(pm.environment.get("take"));
var skip = parseInt(pm.environment.get("skip"));
skip = page * pageSize;
page = page + 1;
pm.environment.set("skip", skip);
pm.environment.set("page", page);
答案 4 :(得分:0)
检查为什么在迭代列时 fillna()
不起作用。
创建一个带有列的 DataFrame
并检查以下输出:
for col in df.columns[df.isnull().any()]:
df[col].fillna(df[col].mode(), inplace = True)
#df[col].fillna(df[col].mode()[0], inplace = True)
print(df[col].mode())
#print(df[col].mode()[0])
print(type(df[col].mode()))
#print(type(df[col].mode()[0]))
df.isnull().sum() / df.shape[0] * 100
较早的一个不会抛出错误,但没有填充 NA 值。注释行似乎有效。