将nan值添加到数据帧会产生不可破坏的类型:';numpy.ndarray和#x27;用Python

将nan值添加到数据帧会产生不可破坏的类型:';numpy.ndarray和#x27;用Python,python,pandas,numpy,nan,Python,Pandas,Numpy,Nan,我想将np.nan插入到数据帧;一个nan用于随机位置的每一行。 这是我的数据帧: list_cols= ['col01', 'col02', 'col03', 'col04', 'col05','col06', 'col07', 'col08', 'col09', 'col10','col11', 'col12', 'col13', 'col14', 'col15', 'col16'] X_full = pd.DataFrame(np.random.uniform(low=1.0, high

我想将
np.nan
插入到
数据帧
;一个
nan
用于随机位置的每一行。
这是我的
数据帧

list_cols= ['col01', 'col02', 'col03', 'col04', 'col05','col06', 'col07', 'col08', 'col09', 'col10','col11', 'col12', 'col13', 'col14', 'col15', 'col16']

X_full = pd.DataFrame(np.random.uniform(low=1.0, high=100.0, size=(5,16)), columns=list(list_cols))
这是我的代码:

# Add a single nan value to each row
rng = np.random.RandomState(0)
n_samples, n_features = X_full.shape
X_missing = X_full.copy()
missing_samples = np.arange(n_samples)
missing_features = rng.choice(n_features, n_samples, replace=True)
X_missing[missing_samples, missing_features] = np.nan
它返回
TypeError:unhabable类型:“numpy.ndarray”


谢谢你的帮助

由于我不能100%确定我是否正确理解您的问题,如果您只想将单个单元格的值更改为NaN(即,(0,12)和(1,7)等处的值应为NaN),那么您可以使用:

for row, column in zip(missing_samples, missing_features):
    X_missing.iat[row, column] = np.nan
请注意,我们使用以“i”开头的方法:
.iat
。这意味着我们正在应用的更改基于Index,而不是行/列名


在您的示例中,您会得到一个错误,因为它将
缺少的\u样本
缺少的\u特征
解释为行名和列名,但您给出的值是数字(即索引)。您可以使用
.iloc
来澄清您给出的是索引而不是名称,但随后它将替换整行,这就是我使用
.iat
的原因,因为我假设您只想替换“特定”索引处的值。希望这有助于

因为我不能100%确定我是否正确理解您的问题,如果您只想将单个单元格的值更改为NaN(即,(0,12)和(1,7)等处的值应为NaN),那么您可以使用:

for row, column in zip(missing_samples, missing_features):
    X_missing.iat[row, column] = np.nan
请注意,我们使用以“i”开头的方法:
.iat
。这意味着我们正在应用的更改基于Index,而不是行/列名

在您的示例中,您会得到一个错误,因为它将
缺少的\u样本
缺少的\u特征
解释为行名和列名,但您给出的值是数字(即索引)。您可以使用
.iloc
来澄清您给出的是索引而不是名称,但随后它将替换整行,这就是我使用
.iat
的原因,因为我假设您只想替换“特定”索引处的值。希望这对你有所帮助

X_missing=X_full.copy()
索引=np.random.choice(范围(X_missing.shape[1]),X_missing.shape[0])
X_missing.values[范围(X_missing.shape[0]),索引]=np.nan
你可以这样做

X_missing=X_full.copy()
索引=np.random.choice(范围(X_missing.shape[1]),X_missing.shape[0])
X_missing.values[范围(X_missing.shape[0]),索引]=np.nan