Заменить определенное значение в датафрейме Python Pandas - PullRequest
3 голосов
/ 19 сентября 2019

Я новичок в Python Panda, я пытаюсь прочитать файл Excel и сделать некоторые вычисления и заполнить некоторые строки.Когда я пытаюсь заполнить значение и распечатать результат, результаты остаются прежними, прежде чем я присваиваю ему значение.

Вот что я сделал.

df.loc[1][13] = 2

df - это то, что я получил из своего файла Excel, как этот

df = pd.read_excel('test.xlsx',header=5)

Я уже проверил данные в df, они отлично работают.

поэтому исходное значение в строке 1, столбце 13 - nan, я хочу заменить его на число, например 2, но приведенный выше код просто не будет работать.

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

Как уже упоминалось в этом документе, https://pandas.pydata.org/pandas-docs/version/0.23/10min.html#selection-by-position, .loc метод обеспечивает выбор по метке, а метод .iloc обеспечивает выбор по позиции.Кроме того, поскольку ваш выбор является скалярным, вы также можете использовать метод .iat.Таким образом, любой из приведенных ниже вариантов будет работать в вашем случае:

df.iloc[1, 13] = 2 
df.iat[1,13] = 2

В общем, я предпочитаю использовать один из .loc или .iloc в зависимости от того, идет ли выбор по метке или по позиции.

1 голос
/ 19 сентября 2019

ознакомьтесь с документацией панд для iloc

. Исходя из этого, очень простой пример замены значения в одной данной ячейке может выглядеть следующим образом:

import pandas as pd
mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},\
          {'a': 100, 'b': 200, 'c': 300, 'd': 400},\
          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pd.DataFrame(mydict)

print(df.iloc[0,2]) # print original value from row 0, column 2
df.iloc[0,2] = 9 # replace value in row 0, column 2
print(df.iloc[0,2]) #verify replaced value in row 0, column 2

Надеюсь, я правильно понял вопрос ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...