微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用列名中的唯一前缀过滤数据框中的特定值例如'UniqueID_commonsuffix'

如何解决使用列名中的唯一前缀过滤数据框中的特定值例如'UniqueID_commonsuffix'

我有一个包含 > 300 个独特样本的数据框,每个样本有 2 列类似信息,我想在每个样本的其中一列中过滤 34 个特定值。我已经包含了数据的屏幕截图以帮助可视化这个问题。我基本上想生成一个新的数据框,其中只包含我指定的 34 个值的信息。如果这个问题难以理解,我很抱歉,我希望屏幕截图有助于更好地定义问题。

screenshot

在此屏幕截图中,需要针对我在单独数据框中拥有的特定值过滤具有“sampleID_r.variant”的每一列。只有 34 个我感兴趣。有了这个,我想将相应的值与它一起存储在“sampleID_reads”列的左侧,就像字典一样。如果有人可以帮助解决这个问题,我将不胜感激。非常感谢。

编辑: 原始数据帧采用以下格式:

sampleID_reads sampleID_r.variant
1 r.79_80ins79+1_79+76
64 r.79_80ins79+10857_79+10938
53 r.79_80ins80-13725_80-13587
72 r.79_80ins80-5488_80-5435
16 r.79_80ins79+2861_79+2900

这 34 个样本的格式如下:

r_dot
r.646_729del
r.-19_-18ins-19+428_-19+535
r.-25_-20del
r.4186_4188del
r.5333_5406del
...等等等等

解决方法

这是一些示例数据

d = {'sample1_reads': [1,64,53,72,16],'sample1_r.variant': ['r.79_80ins79+1_79+76','r.79_80ins79+10857_79+10938','r.79_80ins80-13725_80-13587','r.79_80ins80-5488_80-5435','r.79_80ins79+2861_79+2900'],'sample2_reads': [0,3,6,9,11],'sample2_r.variant': ['r.5333_5406del','r.4186_4188del','r.5333_54106del','r.2345_2345fad','r.65456_w56sjfy']}
df = pd.DataFrame(d)
rdot = pd.DataFrame(['r.79_80ins79+1_79+76','r.646_729del','r.5333_5406del',columns=['r_dot'])

如果您只想根据第二帧过滤第一帧,那么您可以执行以下操作

# reshape your current data frame 
new_df = pd.DataFrame(df.values.reshape((-1,2)),columns=['reads','variant'])
# use boolean indexing to filter your new data frame
df_f = new_df[new_df['variant'].isin(rdot['r_dot'])]

  reads                    variant
0     1       r.79_80ins79+1_79+76
1     0             r.5333_5406del
6    72  r.79_80ins80-5488_80-5435
8    16  r.79_80ins79+2861_79+2900

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。