我想在 CellID 列中添加一个数字,以便对它们进行分类。 数据框是这样的:
umap
CellID wnnUMAP_1 wnnUMAP_2
0 KO_d0_r1:AAACAGCCACCTGCTCx -8.127543 1.593849
1 KO_d0_r2:AAACAGCCACGTAATTx -7.246094 -4.566527
2 HT_d0_r1:AAACAGCCATAATGAGx 7.617473 2.449949
3 HT_d0_r2:AAACATGCACCTAATGx -7.944949 6.633856
我的结果就是这个
umap
CellID wnnUMAP_1 wnnUMAP_2
0 KO_d0_r1:AAACAGCCACCTGCTCx-0 -8.127543 1.593849
1 KO_d0_r2:AAACAGCCACGTAATTx-1 -7.246094 -4.566527
2 HT_d0_r1:AAACAGCCATAATGAGx-2 7.617473 2.449949
3 HT_d0_r2:AAACATGCACCTAATGx-3 -7.944949 6.633856
我会将 0 添加到 KO_d0_r1,将 -1 添加到 KO_d0_r2,将 -2 添加到 HT_do_r1,将 -3 添加到 HT_d0_r2。
这只是一个例子,我有很多带有前缀 KO_d0_r1
的字符串,等等,所以我会通过后缀来区分它们。
我的尝试是:
umap = umap.rename(columns = {'Unnamed: 0':'CellID'})
但是没用
最佳答案
另一种方法,更简单的解决方案,不需要映射,特别是如果您有大量唯一的 CellID。
- 如果
df['CellID']
中没有重复项:
df['CellID'] = df['CellID'] + '-' + (df.index + 1).astype(str)
- 如果
df['CellID']
包含重复项:
df
CellID wnnUMAP_1 wnnUMAP_2
0 KO_d0_r1:AAACAGCCACCTGCTCx -8.127543 1.593849
1 KO_d0_r2:AAACAGCCACGTAATTx -7.246094 -4.566527
2 HT_d0_r1:AAACAGCCATAATGAGx 7.617473 2.449949
3 HT_d0_r2:AAACATGCACCTAATGx -7.944949 6.633856
4 HT_d0_r2:AAACATGCACCTAATGx -6.944949 2.633856
5 HT_d0_r2:AAACATGCACCTAATGx -5.944949 3.633856
df = df.merge((df['CellID'].drop_duplicates() + '-' + (df['CellID'].drop_duplicates().index + 1).astype(str)).reset_index(name='CellID_classified').eval('CellID= CellID_classified.str.split("-").str[0]').drop('index', axis=1), on='CellID', how='left').drop('CellID', axis=1)
df
wnnUMAP_1 wnnUMAP_2 CellID_classified
0 -8.127543 1.593849 KO_d0_r1:AAACAGCCACCTGCTCx-1
1 -7.246094 -4.566527 KO_d0_r2:AAACAGCCACGTAATTx-2
2 7.617473 2.449949 HT_d0_r1:AAACAGCCATAATGAGx-3
3 -7.944949 6.633856 HT_d0_r2:AAACATGCACCTAATGx-4
4 -6.944949 2.633856 HT_d0_r2:AAACATGCACCTAATGx-4
5 -5.944949 3.633856 HT_d0_r2:AAACATGCACCTAATGx-4
关于python - 添加列数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73837331/