Я пытаюсь перебрать строки в кадре данных, чтобы найти значение TRUE.Кадр данных выглядит следующим образом:
Mass 900.5 901.5 902.5 1000.5 1001.5
Height 100 200 300 400 500
mass
901.4 FALSE TRUE FALSE FALSE FALSE
903.5 FALSE FALSE FALSE FALSE FALSE
1001.4 FALSE FALSE FALSE FALSE TRUE
Как видите, строка может иметь значение «ИСТИНА» или может иметь только «ЛОЖЬ».Я хочу перебрать строки для 1-го столбца после массы, и искать, если строка не имеет «ИСТИНА».Если строка не имеет «ИСТИНА», то я хочу присвоить значение для этой конкретной строки как пустое пространство (эквивалентно None в Python, я считаю).Мой текущий код извлекает значения «ИСТИНА» и собирает соответствующие значения высоты.
Например, приведенный выше кадр данных после использования моего кода даст:
текущие результаты:
Mass Height
901.4 200
1001.4 500
код 1:
matches = pd.DataFrame(index=pickuplist['mass'],
columns=df.set_index(list(df.columns)).index,
dtype=bool)
ПростоК вашему сведению, код 1 - это то место, где изначально определено соответствие df.
код 2:
for index, exp_mass, intensity in df.itertuples():
matches[exp_mass] = abs(matches.index - exp_mass)/matches.index < ppm/1e6
Приведенная выше строка - это то, что создает примерный информационный кадр после получения значений на основе допусков ppm.
код 3:
list = matches.any().reset_index(name='a')[matches.any().values]
Приведенная выше строка - это то, что, как я считаю, извлекает значения массы и высоты (таблица текущих результатов).
Я пытался использовать if / iloc и другие, чтобы увидетьесли бы я мог назначить None для конкретной строки, но не работал.Ожидаемые результаты должны быть:
список:
Mass Height
901.4 200
903.5
1001.4 500
(Edit1) Я попытался использовать предложения первого ответа, и он дал мне как:
Height
0 TRUE
1 TRUE
2 TRUE
Может быть, форматы датафреймов разные.Также нет значений False или NaN.Обратите внимание, что между строкой высоты и строкой 901,4 есть пустая строка.
(Edit2) Попытка с использованием предложений из второго ответа, и он дал мне:
Mass Height
0 901.4 (901.4, 200)
1 903.5 (903.5, 518)
2 1001.4 (1001.4, 500)
Значение высоты строки индекса 1 должно быть пустым, но для некоторых получено случайное значениепричина.Если посмотреть на импортированные данные, которые входят в соответствующий кадр данных, то значение 518 представляется первым значением высоты данных.
Исходные данные, поступающие в фрейм данных, выглядят следующим образом:
Mass Height
899.1 518
900.5 100
901.5 200
902.5 300
950.5 400
1000.5 400
1001.5 500
и т. Д.