gpt4 book ai didi

python pandas - 使用 2 列作为引用进行映射

转载 作者:行者123 更新时间:2023-11-28 16:25:40 26 4
gpt4 key购买 nike

我有 2 个 txt 文件要读入 python:1) map 文件,2) 数据文件。我想让一个查找表或字典从一个列的两个列中读取值,并使用 pandas.map 函数之类的东西确定将哪个值放入第 3 列。真实 map 文件约70万行,真实数据文件约1000万行。

玩具数据框(或者我可以将其重新创建为字典)- map

Chr     Position   Name
1 1000 SNPA
1 2000 SNPB
2 1000 SNPC
2 2000 SNPD

玩具数据框 - 数据文件

Chr     Position
1 1000
1 2000
2 1000
2 2001

结果决赛 table :

Chr     Position   Name
1 1000 SNPA
1 2000 SNPB
2 1000 SNPC
2 2001 NaN

我仅通过一列查找就发现了几个与此相关的问题:Adding a new pandas column with mapped value from a dictionary .但似乎找不到使用 2 列的方法。我也对其他可能处理基因组数据的软件包持开放态度。

作为额外的第二个问题,如果有一种方法可以映射第 3 列(如果它具有一定数量的映射值),那就太好了。换句话说,上面结果表的第 4 行将映射到 SNPD,因为它只有 1 个距离。但我很乐意得到上述解决方案。

最佳答案

我会这样做:

读取您的 map 数据,使前两列成为索引:

dfm = pd.read_csv('/path/to/map.csv', delim_whitespace=True, index_col=[0,1])

delim_whitespace=True 更改为 sep=',' 如果您使用 , 作为分隔符

读取你的DF(设置相同的索引):

df = pd.read_csv('/path/to/data.csv', delim_whitespace=True, index_col=[0,1])

加入你的 DF:

df.join(dfm)

输出:

In [147]: df.join(dfm)
Out[147]:
Name
Chr Position
1 1000 SNPA
2000 SNPB
2 1000 SNPC
2001 NaN

关于奖金问题的 PS 尝试像 this 这样的东西

关于python pandas - 使用 2 列作为引用进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971661/

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