python更改数据框指定位置的数据_python-如何使用数据框作为映射来更改另一个数据框中的值...

我有一个大型数据框,它充当整数和名称之间的映射:

from StringIO import StringIO

import pandas as pd

gene_int_map = pd.read_table(StringIO("""Gene Int

Mt-nd1 2

Cers2 4

Nampt 10

Madd 20

Zmiz1 21

Syt1 26

Syt5 30

Syt7 32

Cdca7 34

Ablim2 42

Elp5 43

Clic1 98

Ece2 100"""), sep="\s+")

然后,我有另一个数据框,我要将Gene列转换为映射中给定的整数(to_convert中的名称可以覆盖):

to_convert = pd.read_table(StringIO("""Gene Term

Mt-nd1 GO:0005739

Mt-nd1 GO:0005743

Mt-nd1 GO:0016021

Mt-nd1 GO:0030425

Mt-nd1 GO:0043025

Mt-nd1 GO:0070469

Mt-nd1 GO:0005623

Mt-nd1 GO:0005622

Mt-nd1 GO:0005737

Madd GO:0016021

Madd GO:0045202

Madd GO:0005886

Zmiz1 GO:0005654

Zmiz1 GO:0043231

Cdca7 GO:0005622

Cdca7 GO:0005623

Cdca7 GO:0005737

Cdca7 GO:0005634

Cdca7 GO:0005654"""), sep="\s+")

就像我说的,我想做的就是用gene_int_map中的整数值替换to_convert中的名称.

我敢肯定这是超级简单,但是似乎没有任何合并选项可以做到.我也无法使用任何布尔型蒙版.

附言我还想用gene_int_map中的整数替换一栏数据框中的值:

simple_series = pd.read_table(StringIO("""Gene

Ablim2

Elp5

Clic1

Ece2"""), squeeze=False)

如果答案足够笼统地包括这种情况,那就太好了.

解决方法:

在gene_int_map的“ Gene”列中调用set_index,并将其作为参数传递给map,然后在另一个df的“ Gene”列中进行调用:

In [119]:

to_convert['Gene'].map(gene_int_map.set_index('Gene')['Int'])

Out[119]:

0 2

1 2

2 2

3 2

4 2

5 2

6 2

7 2

8 2

9 20

10 20

11 20

12 21

13 21

14 34

15 34

16 34

17 34

18 34

Name: Gene, dtype: int64

这也适用于您的simple_series:

In [120]:

simple_series['Gene'].map(gene_int_map.set_index('Gene')['Int'])

Out[120]:

0 42

1 43

2 98

3 100

Name: Gene, dtype: int64

标签:pandas,dataframe,python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值