Я пытаюсь замаскировать значения в фрейме данных, но получаю ошибки, когда вводю строки в фрейм данных.
Моя цель - взять любое значение меньше 1 и превратить его в NaN . У меня есть строки, которые я не хочу превращать в NaN (поскольку строки не могут быть меньше 1).
Я просто использую эту команду:
df = df.mask(df.lt(1))
но получаю эту ошибку -
TypeError: '<' not supported between instances of 'str' and 'int'
Есть ли способ избавиться от go мучений, связанных с созданием нового DF и последующим его слиянием? Есть ли способ игнорировать что-либо нечисловое c?
Вот пример с данными:
import pandas as pd
# intialise data of lists.
df = pd.DataFrame({"A":[12, 4, 5, 44, 1],
"B":[5, 2, 54, 3, 2],
"C":[20, 16, 7, 3, 8],
"D":[14, 3, 17, 2, 6]})
df = df.mask(df.lt(19))
print(df)
# result
# A B C D
# 0 NaN NaN 20.0 NaN
# 1 NaN NaN NaN NaN
# 2 NaN 54.0 NaN NaN
# 3 44.0 NaN NaN NaN
# 4 NaN NaN NaN NaN
df1 = pd.DataFrame({"A":["Bob", "Mary", "John", "Paul", "Chris"],
"B":[5, 2, 54, 3, 2],
"C":[20, 16, 7, 3, 8],
"D":[14, 3, 17, 2, 6]})
df1 = df1.mask(df1.lt(19))
print(df1)
error - TypeError: '<' not supported between instances of 'numpy.ndarray' and 'int'