将一列中的值替换为另一列中的值

时间:2018-10-23 20:04:21

标签: python loops replace

我导入了一个数据集,但是“血小板”列中的某些值被添加到名为“ X”的新列中,而在“血小板”列中保留了NaN。

我想遍历血小板列中的每个条目,当我遇到NaN值时,我想用“ X”列中的值替换该值。这是我在下面尝试的(类似的东西在R中工作得很好)。

我不知道我在做什么错。我收到一条错误消息:

TypeError                                Traceback (most recent call last)

< ipython-input-2520-414f4874fae7 > in  < module >()

  3 import math

  4 

----> 5 for i in range(0, N-1):

  6     if math.isnan(data['platelet'][i]):

  7         data['platelet'][i] = data['X'][i]

TypeError: 'Series' object is not callable

N = len(data['platelet'])

import math  


for i in range(0, N-1):  

    if math.isnan(data['platelet'][i]):  

        data['platelet'][i] = data['X'][i]  

2 个答案:

答案 0 :(得分:3)

只需使用fillna方法即可:

data['platelet'] = data['platelet'].fillna(data['X'])

这将用X列中的相应值填充data ['platelet']中的NA值。

答案 1 :(得分:0)

最有可能与您的数据有关,因为当我模拟您的方案时,它可以很好地工作。

尝试在迭代之前以及迭代之间添加数据的打印语句。

还需要将for i in range(0, N-1):更改为for i in range(N):。使用N-1将跳过最后一次迭代。也不需要0

data = {}
data['platelet'] = [float('nan'),float('nan'),float('nan'),float('nan'),float('nan')]
data['X'] = [1,2,3,4,5]

N = len(data['platelet'])

import math  

for i in range(N):
    if math.isnan(data['platelet'][i]):
        data['platelet'][i] = data['X'][i]