Панды: Поиск строки данных в строке за строкой, а затем изменить [без заголовка] - PullRequest
0 голосов
/ 14 октября 2019

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

selectRow = df[df.iloc[:,0].str.match(ID)]

selectRow.replace(ID, 0)

где ID - некоторая строка. Это возвращает одну строку в кадре данных, как и ожидалось. Однако я не могу изменить значения selectRow в кадре данных, так как selectRow является отдельным кадром данных на данный момент.

Я знаю, что мне не хватает чего-то невероятно простого. Любая помощь будет высоко ценится!

CN

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Вы можете сделать это в одной строке следующим образом:

Метод-1:

ID = `eee`
df.iloc[:,0].loc[df.iloc[:,0]==ID] = 0

Вывод :

        C1   C2
0      aaa  bbb
1      ccc  ddd
2        0  fff
3  ggg eee  hhh

Метод-2:

Используйте pandas.Dataframe.replace метод.

df.iloc[:,0].replace(to_replace=ID, value=0, regex=False)

Выход :

        C1   C2
0      aaa  bbb
1      ccc  ddd
2        0  fff
3  ggg eee  hhh

Если выустановите regex=True, который может корректировать строки на основе других вхождений ID. Выход :

        C1   C2
0      aaa  bbb
1      ccc  ddd
2        0  fff
3        0  hhh

Фиктивные данные

df = pd.DataFrame([['aaa','bbb'],['ccc','ddd'],['eee','fff'],['ggg eee','hhh']], columns=['C1','C2'])
print(df)

Выход :

        C1   C2
0      aaa  bbb
1      ccc  ddd
2      eee  fff
3  ggg eee  hhh
0 голосов
/ 14 октября 2019

данные испытаний:

import pandas as pd
df = pd.DataFrame([['aaa','bbb'],['ccc','ddd'],['eee','fff'],['ggg','hhh']])

df:

    Out[42]: 
         0    1
    0  aaa  bbb
    1  ccc  ddd
    2  eee   fff
    3  ggg  hhh

код:

Template = 'eee'
df[0] = [(lambda x: 0 if (x == Template) else x)(x) for x in df[0]]

Результат:

Out[45]: 
         0    1
    0  aaa  bbb
    1  ccc  ddd
    2    0  fff
    3  ggg  hhh

Это помогает?

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