Чтобы удалить строки, для которых четвёртого столбец равен ?
, вы можете выбрать данные, которые не равны ?
.
# Test data
df = DataFrame({
'col0': [0, 1, 2, 3, 4],
'col1': [0, 1, 2, 3, 4],
'col2': [0, 1, 2, 3, 4],
'col3': [0, 1, 2, 3, 4],
'col4': [0, 1, 2, '?', '?']})
df.loc[df.iloc[:, 4] != '?']
col0 col1 col2 col3 col4
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
Если вы хотите, чтобы устранить строки, для которых четвёртой колонка содержит ?
, это немного сложнее, так как вы должны избежать ?
характера и обеспечить значение по умолчанию False
для булевой индексировании для работы и, наконец, логическим отрицание ~
.
df.loc[~df.iloc[:,4].str.contains('\?', na = False)]
col0 col1 col2 col3 col4
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
Редактировать
Если столбец содержит только цифры, вы можете также использовать следующий метод. Преобразование в числовое значение с использованием параметра errors
coerce
, чтобы произвести NaN
для значений, которые невозможно преобразовать. Затем просто снимите значения с помощью dropna
.
df.iloc[] = pd.to_numeric(df.iloc[:,4], errors='coerce')
# Or if you want to apply the transformation to the entire DataFrame
# df = df.apply(pd.to_numeric, errors='coerce')
df.dropna(inplace=True)
col0 col1 col2 col3 col4
0 0 0 0 0 0.0
1 1 1 1 1 1.0
2 2 2 2 2 2.0
Действительно ли они '?' (Строка)? Вы хотите удалить строку, если она содержит какой-либо столбец как таковой? –
Выполняет ли метод 'DataFrame.dropna()' то, что вы хотите сделать? –
'df [df.iloc [:, 4] .astype (str)! ="? "]'. То есть, если столбец 4 означает индекс 4. В противном случае вам может понадобиться использовать индекс 3 для столбца 4. – Abdou