es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Valor de error: ‘_index’ es un nombre reservado para las columnas del dataframe

Estoy tratando de guardar un archivo en formato h5ad y me está dando este error de valor: ValueError: ‘_index’ es un nombre reservado para las columnas del dataframe.

import pandas as pd
import scanpy as sc
import numpy as np
data = sc.read_h5ad('f.h5ad')
annotation = pd.read_csv('n.tsv', sep='\t')
annotation_dict = {item['barcodes']:item['celltype'] for item in annotation.to_dict('records')}
data.obs['barcodes'] = data.obs.index
data.obs['celltype'] = data.obs['barcodes'].map(annotation_dict)

sc.pp.filter_genes(data, min_cells=686)
sc.pp.filter_cells(data, min_genes=10)
sc.pp.normalize_per_cell(data, 20000)
sc.pp.log1p(data)
sc.pp.highly_variable_genes(data, n_top_genes=1000)
data.X = np.exp(data.X.toarray()) - 1
data = data[:, data.var['highly_variable']]
sc.pp.normalize_per_cell(data, 3800)

clustered = sc.read_h5ad('f.h5ad')
sc.pp.filter_cells(data, min_genes=10)
sc.pp.recipe_zheng17(clustered)

sc.tl.pca(clustered, n_comps=50)
sc.pp.neighbors(clustered, n_pcs=50)
sc.tl.louvain(clustered, resolution=0.15)
clustered.obs.groupby('louvain').count()
data.obs['louvain'] = list(clustered.obs['louvain'])
split = pd.DataFrame(data.obs['barcodes'])
test = split.sample(frac=0.2)
d_split = {item:'test' for item in test['barcodes']}
data.obs['split'] = data.obs['barcodes'].map(d_split).fillna('train')
data.write_h5ad('e.h5ad')
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “ValueError: ‘_index’ es un nombre reservado para las columnas de un dataframe” está ocurriendo porque ‘_index’ es un nombre reservado en pandas y no se puede usar como nombre de columna. Para evitar este error, puedes cambiar el nombre de la columna de ‘_index’ a algo que no sea un nombre reservado. Puedes hacer esto modificando la línea data.obs['barcodes'] = data.obs.index a algo como data.obs['cell_barcodes'] = data.obs.index, donde ‘cell_barcodes’ es un ejemplo de un nuevo nombre de columna que podría ser utilizado en lugar de ‘_index’. Esto debería resolver el error y permitirte guardar el archivo en formato h5ad.

Comments are closed.