我有以下pandas DataFrame:
df = pd.DataFrame({'name': ['Johnny', 'Michelle'},
'quiz': [10, np.nan],
'test': [np.nan, 49]})
我将此数据传递给DataTables表。如何将NaN
转换为更具可读性的内容?我尝试过使用defaultContent
选项,但这似乎只适用于完全缺失的数据。我的实际表也有很多列。如果有一种更简单的方法将此更改应用于整个表(所有列)而不是为每列明确定义它,那么这也很有用(http://jsfiddle.net/ndaboky3/3/)。
$('.display').DataTable({
data: data,
columns: [
{data: 'name'},
{data: 'quiz',
defaultContent: 'No Data'
},
{data: 'test',
defaultContent: 'No Data'
}]
})
答案 0 :(得分:0)
您可以创建一个递归函数来替换所有深度的对象值,例如
(function rec(d) {
$.each(d, function(k, v) {
if (typeof v === 'object') return rec(v)
if (isNaN(v) && typeof v === 'number') d[k] = 'No Data';
})
})(data);
答案 1 :(得分:0)
您可以使用fillna
更改pandas DataFrame中的所有NaN:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'name': ['Johnny', 'Michelle'],
'quiz': [10, np.nan],
'test': [np.nan, 49]
})
filled = df.fillna('no data')
然后你得到:
print(filled)
name quiz test
0 Johnny 10 no data
1 Michelle no data 49
一个警告是,它与你的dtypes混淆,我不确定这在你的背景下是否重要。