我在使用python分析单细胞数据时,运行代码
import scanpy as sc
adata_68 = sc.read_10x_h5('E:\学习\python\GSE138669\h5\GSM4115868_SC1raw_feature_bc_matrix.h5')
adata_69 = sc.read_10x_h5('E:\学习\python\GSE138669\h5\GSM4115869_SC2raw_feature_bc_matrix.h5')
adata_68.obs_names_make_unique()
adata_69.obs_names_make_unique()
adata_68.obs.index=['CON68-'+x for x in adata_68.obs.index]
adata_69.obs.index=['SSc69-'+x for x in adata_69.obs.index]
import anndata as ad
adatas=[adata_68,adata_69]
adata = ad.concat(adatas, merge = "same")
ValueError: cannot reindex from a duplicate axis
读取的文件下载自https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE138669&format=file
已参考https://blog.csdn.net/kk03231033/article/details/121766069 进行修改,问题未解决。
在别的数据上能跑,这里不行,请大家帮忙看看是为什么,怎么改,感谢
详细报错信息:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
e:\学习\python\GSE138669\GSE138669.py in <module>
8 import anndata as ad
9 adatas=[adata_68,adata_69]
---> 10 adata = ad.concat(adatas, merge = "same")
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\anndata\_core\merge.py in concat(adatas, axis, join, merge, uns_merge, label, keys, index_unique, fill_value, pairwise)
836
837 # Annotation for other axis
--> 838 alt_annot = merge_dataframes(
839 [getattr(a, alt_dim) for a in adatas], alt_indices, merge
840 )
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\anndata\_core\merge.py in merge_dataframes(dfs, new_index, merge_strategy)
548 dfs: Iterable[pd.DataFrame], new_index, merge_strategy=merge_unique
549 ) -> pd.DataFrame:
--> 550 dfs = [df.reindex(index=new_index) for df in dfs]
551 # New dataframe with all shared data
552 new_df = pd.DataFrame(merge_strategy(dfs), index=new_index)
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\anndata\_core\merge.py in <listcomp>(.0)
548 dfs: Iterable[pd.DataFrame], new_index, merge_strategy=merge_unique
549 ) -> pd.DataFrame:
--> 550 dfs = [df.reindex(index=new_index) for df in dfs]
551 # New dataframe with all shared data
552 new_df = pd.DataFrame(merge_strategy(dfs), index=new_index)
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
322 @wraps(func)
323 def wrapper(*args, **kwargs) -> Callable[..., Any]:
--> 324 return func(*args, **kwargs)
325
326 kind = inspect.Parameter.POSITIONAL_OR_KEYWORD
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\frame.py in reindex(self, *args, **kwargs)
4770 kwargs.pop("axis", None)
4771 kwargs.pop("labels", None)
-> 4772 return super().reindex(**kwargs)
4773
4774 @deprecate_nonkeyword_arguments(version=None, allowed_args=["self", "labels"])
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\generic.py in reindex(self, *args, **kwargs)
4816
4817 # perform the reindex on the axes
-> 4818 return self._reindex_axes(
4819 axes, level, limit, tolerance, method, fill_value, copy
4820 ).__finalize__(self, method="reindex")
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\frame.py in _reindex_axes(self, axes, level, limit, tolerance, method, fill_value, copy)
4595 index = axes["index"]
4596 if index is not None:
-> 4597 frame = frame._reindex_index(
4598 index, method, copy, level, fill_value, limit, tolerance
4599 )
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\frame.py in _reindex_index(self, new_index, method, copy, level, fill_value, limit, tolerance)
4614 new_index, method=method, level=level, limit=limit, tolerance=tolerance
4615 )
-> 4616 return self._reindex_with_indexers(
4617 {0: [new_index, indexer]},
4618 copy=copy,
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\generic.py in _reindex_with_indexers(self, reindexers, fill_value, copy, allow_dups)
4881
4882 # TODO: speed up on homogeneous DataFrame objects
-> 4883 new_data = new_data.reindex_indexer(
4884 index,
4885 indexer,
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\internals\managers.py in reindex_indexer(self, new_axis, indexer, axis, fill_value, allow_dups, copy, consolidate, only_slice)
668 # some axes don't allow reindexing with dups
669 if not allow_dups:
--> 670 self.axes[axis]._validate_can_reindex(indexer)
671
672 if axis >= self.ndim:
~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\core\indexes\base.py in _validate_can_reindex(self, indexer)
3783 # trying to reindex on an axis with duplicates
3784 if not self._index_as_unique and len(indexer):
-> 3785 raise ValueError("cannot reindex from a duplicate axis")
3786
3787 def reindex(
ValueError: cannot reindex from a duplicate axis