Как удалить строки с нецелыми значениями из серии панд объекта dtype? - PullRequest
0 голосов
/ 27 октября 2019

Фрейм данных, основанный на опросе о конфетах, имеет столбец для возраста участника опроса. В настоящее время d-тип этого столбца является объектом. Некоторые значения в этом столбце являются целыми числами, некоторые являются строками (например, 50+, слишком старые для этого). Как удалить строки, которые имеют строки? Большинство решений, которые я пробовал, не работали или применимы только к целым фреймам данных.

Как показано в приведенном ниже коде, я пытался использовать неравенства, преобразовывать столбец в int и удалять нулевые значения и сохранять толькостроки со значениями, которые находятся в определенном подмножестве.

df = df[(df['Age'] >= 3) & (df['Age'] <= 100)]

df = df[pd.to_numeric(df.Age, errors='coerce').notnull()]
df = df.dropna(subset = ['Age'])

df = df.convert_objects(convert_numeric=True).dropna()

a=[]
for i in range(2,101):
    a.append(i)
df = df[~df.Age.isin(a)]

Я обычно получаю "'> =', не поддерживаемый между экземплярами 'str' и 'int'" или неизменным фреймом данных.

1 Ответ

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

Попробуйте это:

mport pandas as pd

df=pd.DataFrame({"age": ["45", "50+", "34 ", "34 years", "too old"], "xyz":[1,4,7,3,6]})
print(df)
df.drop(df.index[df["age"].apply(lambda x: not (x.strip().isnumeric()))], axis=0, inplace=True)

print(df)

Вывод:

age  xyz
0        45    1
1       50+    4
2       34     7
3  34 years    3
4   too old    6


   age  xyz
0   45    1
2  34     7

[Program finished]
...