dalv_happy
@dalv_happy

Как удалить строку, если хотя бы в одной ячейки не число?

Здравствуйте. Есть csv файлик, в котором 515344 строк и 90 столбцов.
Необходимо удалить из DataFrame те строки, в которых значение хотя бы одного столбца будет не равно числу.

Как я пытался решить проблему (но это сработает только для DataSeries):
df.convert_objects(convert_numeric=True).dropna()
Скачать CSV можно отсюда
Код:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score, f1_score

# Load the diabetes dataset
diabetes = datasets.load_diabetes()
df = pd.read_csv('YearPredictionMSD.txt', sep=',')
  • Вопрос задан
  • 483 просмотра
Пригласить эксперта
Ответы на вопрос 2
@kzoper
import pandas as pd
from io import StringIO

data = """
col1,col2
1,3
2,5
3,2
tt,2
4,1
5,F
1,G
"""

df = pd.read_csv(StringIO(data))


for column in df:
    df = df[df[column].apply(lambda x: x.isnumeric())]
print(df)

-=-=-=--=-=
col1 col2
0 1 3
1 2 5
2 3 2
4 4 1
-=-=-=-=-=-
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
чудес нет, либо построчно читайте в Панду

либо предподготавливайте файл:
1) считали csv.read() / правильный dialect в список
2) прогнали isdigit() через list comprehentions / преобразовали в float / int / decimal (хз за Панду с decimal)
3) записали с диалектом QUOTE_NONNUMERIC
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы