python熊猫-使用2列作为参考进行映射
我有两个txt文件想读入python:1)一个映射文件,2)一个数据文件。我想让一个查找表或字典读取一列中两列的值,并使用类似pandas.map函数的函数确定将哪个值放入第三列。实际地图文件约700000行,实际数据文件约1000万行 玩具数据框(或者我可以重新创建为字典)-地图 玩具数据框-数据文件python熊猫-使用2列作为参考进行映射,python,dictionary,pandas,Python,Dictionary,Pandas,我有两个txt文件想读入python:1)一个映射文件,2)一个数据文件。我想让一个查找表或字典读取一列中两列的值,并使用类似pandas.map函数的函数确定将哪个值放入第三列。实际地图文件约700000行,实际数据文件约1000万行 玩具数据框(或者我可以重新创建为字典)-地图 玩具数据框-数据文件 Chr Position 1 1000 1 2000 2 1000 2 2001 最终生成的表格: Chr Position
Chr Position
1 1000
1 2000
2 1000
2 2001
最终生成的表格:
Chr Position Name
1 1000 SNPA
1 2000 SNPB
2 1000 SNPC
2 2001 NaN
我只在一个列查找中发现了几个关于此的问题:。但似乎找不到使用两列的方法。我也对其他可能处理基因组数据的软件包持开放态度
作为第二个额外问题,如果第三列具有一定数量的映射值,那么如果有方法映射第三列也很好。换句话说,上面生成的表的第4行将映射到SNPD,因为它离SNPD只有1远。但是我很乐意得到上面的解决方案。我会这样做: 读取地图数据,使前两列成为索引:
dfm = pd.read_csv('/path/to/map.csv', delim_whitespace=True, index_col=[0,1])
将delim_whitespace=True
更改为sep=',
如果您有,
作为分隔符
读取DF(设置相同的索引):
加入您的DFs:
df.join(dfm)
输出:
In [147]: df.join(dfm)
Out[147]:
Name
Chr Position
1 1000 SNPA
2000 SNPB
2 1000 SNPC
2001 NaN
对于奖金问题,请尝试类似于的方法,如果我的dfs有不同的列名,我该怎么做?我刚刚开始学习Python和pandas(我通常在R中工作)。我是要重命名该列,还是有其他方法?@GaiusAugustus,Pandas中有三个函数可用于加入:
join
、merge
和concat
——了解它们会帮助你有一个好的开始
df.join(dfm)
In [147]: df.join(dfm)
Out[147]:
Name
Chr Position
1 1000 SNPA
2000 SNPB
2 1000 SNPC
2001 NaN