gpt4 book ai didi

python - 为新数据添加具有唯一标识符的列,但在 python 中维护先前数据的唯一标识符

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:25 25 4
gpt4 key购买 nike

我有一个 tsv 文件(第 1 列 = 唯一 ID,第 2 列 = 组关联),如下所示:

BC187   1 
L1374 1
YJM1332 1
YPS128 2
YPS606 2
YJM1273 2
UWOPS03.461.4 3
UWOPS05.217.3 3
UWOPS05.227.2 3

本质上BC187、L1374和YJM1332都属于第1组等。

我生成的输出是另一个独特个体的列表,如下所示:

Y12
DBVPG604
GE14S01.7B

我可以通过以下方式将第二个列表附加到 tsv 文件:

with open('~/clade.file.txt', 'a') as f:
divergedstrain.to_csv(f, header = False, index = False)

获取以下列表:

BC187   1 
L1374 1
YJM1332 1
YPS128 2
YPS606 2
YJM1273 2
UWOPS03.461.4 3
UWOPS05.217.3 3
UWOPS05.227.2 3
Y12
DBVPG604
GE14S01.7B

但现在我需要为三个新的独特个体(Y12、DBVPG604、GE14S01.7B)提供他们自己独特的关联,如下所示:

BC187   1 
L1374 1
YJM1332 1
YPS128 2
YPS606 2
YJM1273 2
UWOPS03.461.4 3
UWOPS05.217.3 3
UWOPS05.227.2 3
Y12 4
DBVPG604 5
GE14S01.7B 6

我不确定通过 python 或 bash 执行此操作的最佳方法是什么。有什么建议

最佳答案

这是一种方法:

from pandas import DataFrame as df
from pandas import read_csv

file_path = 'clade.file.txt'

divergedstrain = df(["Y12", "DBVPG604", "GE14S01.7B", "Y12"])
with open(file_path, 'a') as f:
divergedstrain.to_csv(f, header=False, index=False)

df = read_csv(file_path, header=None, delimiter=' ', skipinitialspace=True, usecols=[0, 1])

ids = {}
for index, row in df.iterrows():
if row[0] not in ids and row[1] == row[1]:
ids[row[0]] = row[1]


def set_and_save(curr_row):
if curr_row[1] != curr_row[1]:
if curr_row[0] in ids:
curr_row[1] = ids[curr_row[0]]
else:
new_id = max(ids.values()) + 1
ids[curr_row[0]] = new_id
curr_row[1] = new_id
return curr_row


df = df.apply(set_and_save, axis=1)
print(df)

输出:

                0    1
0 BC187 1.0
1 L1374 1.0
2 YJM1332 1.0
3 YPS128 2.0
4 YPS606 2.0
5 YJM1273 2.0
6 UWOPS03.461.4 3.0
7 UWOPS05.217.3 3.0
8 UWOPS05.227.2 3.0
9 Y12 4.0
10 DBVPG604 5.0
11 GE14S01.7B 6.0
12 Y12 4.0

关于python - 为新数据添加具有唯一标识符的列,但在 python 中维护先前数据的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56691444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com