Pandas: Извлеките индекс строк, которые, по-видимому, имеют переменную с плавающей запятой

#python-3.x #dataframe

#python-3.x #фрейм данных

Вопрос:

Предположим, у меня есть следующий фрейм данных

 import pandas as pd
df = pd.DataFrame( {3: {0: 'Total shareholders’ equity, beginning balances', 1: 'Total shareholders’ equity, beginning balances', 2: 'Total shareholders’ equity, beginning balances', 3: '

Как вы можете видеть, что индексы 4, 10, 16 являются числами. Как я могу извлечь эти числа автоматически.

Примечание: как вы можете видеть, этот столбец содержит строки, а также числа, но эти числа считываются как строки.


Ответ №1:

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

 pd.to_numeric(df['col'], errors='coerce').dropna().index
 

Out:

 Int64Index([4, 10, 16], dtype='int64')
 

Комментарии:

1. Он также преобразует значения, которые являются a) float и b) bool, что может не быть стимулом OP

Ответ №2:

Вы можете создать маску, чтобы проверить, являются ли они числовыми:

 df[df[3].str.isnumeric()]
 

приводит к:

     3
4   90488
10  107147
16  134047
 

, 4: '90488', 9: 'Как вы можете видеть, что индексы 4, 10, 16 являются числами. Как я могу извлечь эти числа автоматически.

Примечание: как вы можете видеть, этот столбец содержит строки, а также числа, но эти числа считываются как строки.

Ответ №1:

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


Out:


Комментарии:

1. Он также преобразует значения, которые являются a) float и b) bool, что может не быть стимулом OP

Ответ №2:

Вы можете создать маску, чтобы проверить, являются ли они числовыми:


приводит к:


, 10: '107147', 15: 'Как вы можете видеть, что индексы 4, 10, 16 являются числами. Как я могу извлечь эти числа автоматически.

Примечание: как вы можете видеть, этот столбец содержит строки, а также числа, но эти числа считываются как строки.

Ответ №1:

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


Out:


Комментарии:

1. Он также преобразует значения, которые являются a) float и b) bool, что может не быть стимулом OP

Ответ №2:

Вы можете создать маску, чтобы проверить, являются ли они числовыми:


приводит к:


, 16: '134047'}} )
Как вы можете видеть, что индексы 4, 10, 16 являются числами. Как я могу извлечь эти числа автоматически.

Примечание: как вы можете видеть, этот столбец содержит строки, а также числа, но эти числа считываются как строки.

Ответ №1:

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


Out:


Комментарии:

1. Он также преобразует значения, которые являются a) float и b) bool, что может не быть стимулом OP

Ответ №2:

Вы можете создать маску, чтобы проверить, являются ли они числовыми:


приводит к: