Python - перебирать строки и столбцы - PullRequest
0 голосов
/ 28 мая 2018

Прежде всего, пожалуйста, извините за мои навыки.Я пытаюсь войти в 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] не являетсяв [столбцах]

у меня также были другие ошибки с немного другим кодом, например:

не может выполнить индексирование меток для класса pandas.core.indexes.base.Index сэти поплавки класса указателей

Не могли бы вы помочь мне, пожалуйста?

Заранее спасибо!

Приветствия.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я не знаю, есть ли лучший способ, но он прекрасно работает:

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
0 голосов
/ 29 мая 2018

Где df:

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

Используйте transpose и fillna:

Из-за 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
...