在另一个df中添加一个新列,具体取决于另一个df中的信息

2024-10-01 19:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

他说我必须签下文件,例如:

文件1.txt

Seqname1 Seqname2
Seq1(+) SeqA
Seq2(-) SeqA
Seq3(+) SeqB
Seq2(-) SeqC
Seq8(-) SeqY
Seq8(-) SeqH
Seq10(+) SeqK

文件2.txt

Clustername Names
Cluster1    SeqA
Cluster1    Seq1(+)
Cluster1    SeqC
Cluster1    Seq2(-)
Cluster1    Seq3(+)
Cluster1    SeqB
Cluster1    SeqG
Cluster2    Seq8(-)
Cluster2    SeqY
Cluster2    SeqH
Cluster3    Seq10(+)
Cluster3    SeqK

我们的想法是首先为Names中的每个元素签入file2.txt,如果这个元素有一个(+)或一个(-),然后检查它相应的Clustername,然后继续file1.txt,并在Clustername列添加相应的clustername。 例如,这里有Seq1(+),它的Clustername是Cluster1,然后我在file1.txt中查找存在Seqname1的行,并将Cluster1添加到Clustername列中

最后我会得到这样的结果:

Clustername Seqname1 Seqname2
Cluster1 Seq1(+) SeqA
Cluster1 Seq2(-) SeqA
Cluster1 Seq3(+) SeqB
Cluster1 Seq2(-) SeqC
Cluster2 Seq8(-) SeqY
Cluster2 Seq8(-) SeqH
Cluster3 Seq10(+) SeqK

有人想到用Python和熊猫吗


Tags: 文件txtseq2seq1seqaseqbcluster2cluster1
1条回答
网友
1楼 · 发布于 2024-10-01 19:29:35

首先读取文件

df1=pd.read_csv('your directory path/file1.txt', sep=" ")
df2=pd.read_csv('your directory path/file2.txt', sep=" ")

然后,

我们可以使用^{}检查包含(+)(-)的行。我们可以使用^{},然后使用^{}

m1=df2['Names'].str.contains('(+)',regex=False)
m2=df2['Names'].str.contains('(-)',regex=False)
new_df=df2[m1|m2].merge(df1,left_on='Names',right_on='Seqname1').drop('Names',axis=1)
print(new_df)

  Clustername  Seqname1 Seqname2
0    Cluster1   Seq1(+)     SeqA
1    Cluster1   Seq2(-)     SeqA
2    Cluster1   Seq2(-)     SeqC
3    Cluster1   Seq3(+)     SeqB
4    Cluster2   Seq8(-)     SeqY
5    Cluster2   Seq8(-)     SeqH
6    Cluster3  Seq10(+)     SeqK

相关问题 更多 >

    热门问题