Sample_ID | fungi | fungi_ID | evalue | ITS_region
A1 red 1112 0.7 1
A1 red 1112 0.4 2
B1 green 1234 0.03 1
B1 blue 9090 0.02 2
到此:
Sample_ID | fungi | fungi_ID | evalue | ITS_region | dup_ITS | dup_fungi | dup_fungi_ID
A1 red 1112 0.7 1 2 red 1112
B1 green 1234 0.03 1 2 blue 9090
我已将NCBI爆炸中的数据解析为熊猫数据帧。但是,所有数据都有重复的ID(参见附件),我需要来自同一行的两个IDS的信息。
我想要实现的是将行数据从重复项移动到与原始行相同的行中的新列。
df包含以下标题(请参阅附件):sample_id
,fungi
,fungi_id
,evalue
,ITS region
答案 0 :(得分:0)
如果每个Sample_ID
只有两行,请按Sample_ID
列join
使用groupby
,并按last
获取最后一个值。然后,drop
删除重复的新列,并通过reset_index
重置索引:
print df
# Sample_ID fungi fungi_ID evalue ITS_region
#0 A1 red 1112 0.70 1
#1 A1 red 1112 0.40 2
#2 B1 green 1234 0.03 1
#3 B1 blue 9090 0.02 2
print df.join(df.groupby('Sample_ID').last(), on='Sample_ID', rsuffix='_dup')
.drop_duplicates(subset=['fungi_dup','fungi_ID_dup','ITS_region_dup','evalue_dup'])
.reset_index(drop=True)
# Sample_ID fungi fungi_ID evalue ITS_region fungi_dup fungi_ID_dup \
#0 A1 red 1112 0.70 1 red 1112
#1 B1 green 1234 0.03 1 blue 9090
#
# evalue_dup ITS_region_dup
#0 0.40 2
#1 0.02 2