Python - 迭代行和列

时间:2018-05-28 16:46:22

标签: python compare iteration rows calculated-columns

首先,请原谅我的技能。我试图进入Python,我只是为了好玩而学习,让我说,我不专业地使用它,而且我很不好,说实话。我的问题可能会有基本错误。

无论如何,我试图查看数据框的行和列。我想检查列的值(第一个除外)是否为NaN。如果是,那么他们应该改为第一个的价值。

import math

for index, row in rawdata3.iterrows():
    test = row[0]
    for column in row:
        if math.isnan(row.loc[column]) == True:
            row.loc[column] = test

我得到的错误是这样的:

  

标签[4.0]不在[columns]

我还有其他错误,代码略有不同,如:

  

无法对类pandas.core.indexes.base.Index进行标签索引,使用这些索引器类float

请问你帮我一个忙吗?

提前致谢!

干杯。

2 个答案:

答案 0 :(得分:0)

df是:

   A    B    C
0  5  NaN  2.0
1  6  5.0  NaN
2  9  NaN  NaN
3  2  4.0  6.0

使用transposefillna

  

由于fillna“NotImplementedEerror”   NotImplementedError:目前只能填写dict / Series列   按列   df.fillna(value=df.A, axis=1)无效。因此我们使用:

df.T.fillna(df.A).T

输出:

     A    B    C
0  5.0  5.0  2.0
1  6.0  5.0  6.0
2  9.0  9.0  9.0
3  2.0  4.0  6.0

答案 1 :(得分:0)

我不知道是否有更好的方法,但这很好用:

for i in df.columns:
    df.loc[df[i].isnull(), i] = df.loc[df[i].isnull(), 'A']

输出:

   A    B    C
0  5  5.0  2.0
1  6  5.0  6.0
2  9  9.0  9.0
3  2  4.0  6.0