Фильтровать столбец в пандах и конвертировать в плавающие - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть pandas dataframe, который содержит некоторые довольно инфильтрированные данные.

df['Q53']
OUTPUT:
0      Hvor mange timer træner din virksomhed medarbe...
3                                                    NaN
4                                                    NaN
5                                                    NaN
6                                                      2
7                                                    NaN
8                                                     10
9                                                    NaN
10                                                    50
11                                                   NaN
12                                                     ?
13                                                     ?
14                                                     8
15                                                   NaN
16                                                     2
17                                                     0
18                                                     1
19                                                     1
20                                                     5
21                                             7x3 timer
22                                                   NaN
23                                               8 timer
24                                                   NaN
25                                                     0
26                                                     8
27                                                   NaN

Проблема сейчас в том, что я хочу, чтобы в столбце остались целые числа, а затем приведу их как число с плавающей точкой,так что я могу сделать некоторую визуализацию данных с колонкой.

Мне было интересно, смогу ли я выполнить некоторую стандартизированную фильтрацию, но я не смог заставить ее работать.

Есть ли операция, где я могу отфильтровать все NaN и * 1009?* значения, и просто оставить значение, которое может быть преобразовано в float или int

Ответы [ 2 ]

3 голосов
/ 26 сентября 2019

Вы можете проверить, если isdigit выбрать только True столбцы.

df[df['Q53'].apply(lambda x: str(x).isdigit())]
1 голос
/ 26 сентября 2019

Преобразовать значения в числовые, а затем удалить ошибочные значения:

df['Q53'] = pd.to_numeric(df['Q53'], errors='coerce')
df = df.dropna(subset=['Q53'])
print (df)
     Q53
6    2.0
8   10.0
10  50.0
14   8.0
16   2.0
17   0.0
18   1.0
19   1.0
20   5.0
25   0.0
26   8.0

РЕДАКТИРОВАТЬ: я рекомендую не использовать eval, вот решение для извлечения числовых с x между,конвертировать в поплавки и кратные между.

Затем замените пропущенные значения на все числовые значения, извлеченные с помощью \d+ patter в регулярном выражении и преобразованные в числа.

Последнее удаление отсутствующих значений: DataFrame.dropna:

dfx = df['Q53'].astype(str).str.extract('(\d+)x(\d+)').astype(float).prod(axis=1, min_count=1)

num = df['Q53'].astype(str).str.extract('(\d+)', expand=False)

df['Q53'] = dfx.fillna(pd.to_numeric(num, errors='coerce'))
df = df.dropna(subset=['Q53'])
print (df)
     Q53
6    2.0
8   10.0
10  50.0
14   8.0
16   2.0
17   0.0
18   1.0
19   1.0
20   5.0
21  21.0
23   8.0
25   0.0
26   8.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...