Строковая проблема / Выбрать все значения> 8000 в панде - PullRequest
1 голос
/ 01 октября 2019

Я хочу выбрать все значения, превышающие 8000, в рамках кадра данных pandas.

new_df = df.loc[df['GM'] > 8000]

Однако это не работает. Я думаю, проблема в том, что значение берется из файла Excel, а число интерпретируется как строка, например, «1.111,52». Знаете ли вы, как я могу преобразовать такую ​​строку в float / int, чтобы правильно ее сравнить?

Ответы [ 4 ]

3 голосов
/ 01 октября 2019

Взято из документации pd.read_excel:

Разделитель тысяч для разбора строковых столбцов в числовые. Обратите внимание, что этот параметр необходим только для столбцов, хранящихся в формате TEXT в Excel, любые числовые столбцы будут автоматически анализироваться независимо от формата отображения.

Это означает, что pandas проверяет тип сохраненного форматав превосходствеЕсли это было numeric в Excel, преобразование должно пройти правильно. Если ваш столбец был string, попробуйте использовать:

df = pd.read_excel('filename.xlsx', thousands='.')

Если у вас есть файл csv, вы можете решить эту проблему, указав символ thousands + decimal:

df = pd.read_csv('filename.csv', thousands='.', decimal=',')
2 голосов
/ 01 октября 2019

Вы можете увидеть значение df.dtypes, чтобы увидеть тип каждого столбца. Затем, если тип столбца не такой, как вы хотите, вы можете изменить его на df['GM'].astype(float), и тогда new_df = df.loc[df['GM'].astype(float) > 8000] будет работать так, как вы хотите.

1 голос
/ 01 октября 2019

вы можете преобразовать весь тип данных столбца в числовой

import pandas as pd
df['GM'] = pd.to_numeric(df['GM'])
0 голосов
/ 01 октября 2019

Вы можете увидеть тип данных вашего столбца с помощью функции type. Чтобы преобразовать его в число с плавающей запятой, используйте функцию astype следующим образом:

df['GM'].astype(float)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...