我开始学习熊猫,并停留在以下问题上:
我有两个大的DataFrames: df1=
ID KRAS ATM
TCGA-3C-AAAU-01A-11R-A41B-07 101 32
TCGA-3C-AALI-01A-11R-A41B-07 101 75
TCGA-3C-AALJ-01A-31R-A41B-07 102 65
TCGA-3C-ARLJ-01A-61R-A41B-07 87 54df2=
ID BRCA1 ATM
TCGA-A1-A0SP 54 65
TCGA-3C-AALI 191 8
TCGA-3C-AALJ 37 68ID是这两个df中的索引。首先,我希望在df1中将ID的名称减少到前10位(将TCGA-3C-AAAU-01A-11R-A41B-07转换为TCGA-3C-AAAU)。然后,我想从df1生成一个新的df,它的ID与df2中存在的ID相同。
df3应该如下所示:
ID KRAS ATM
TCGA-3C-AALI 101 75
TCGA-3C-AALJ 102 65我尝试了不同的方法,但都失败了。对此有什么建议吗?
发布于 2018-04-03 06:17:45
IIUC TCGA-3C-AAAU这包含12个字符:-)
df3=df1.assign(ID=df1.ID.str[:12]).loc[lambda x:x.ID.isin(df2.ID),:]
df3
Out[218]:
ID KRAS ATM
1 TCGA-3C-AALI 101 75
2 TCGA-3C-AALJ 102 65发布于 2018-04-03 06:21:38
以下是使用矢量化函数的一种方法:
# truncate to first 10 characters, or 12 including '-'
df1['ID'] = df1['ID'].str[:12]
# filter for IDs in df2
df3 = df1[df1['ID'].isin(df2['ID'])]结果
ID KRAS ATM
1 TCGA-3C-AALI 101 75
2 TCGA-3C-AALJ 102 65说明
.str访问器将df1['ID']限制为前12个characters.df1,以便仅包括在df2.中找到的in
https://stackoverflow.com/questions/49619508
复制相似问题