Учитывая это значительно упрощенный test.csv файл:Как отсортировать численно, но read_csv с dtype = object?
wrong
8
7
6
3
1
2
4
5
9
10
и этот код:
#!/usr/bin/python
import pandas as pd
data = pd.read_csv('test.csv', dtype=object)
counts=data['wrong'].value_counts(dropna=False)
counts_converted=counts.convert_objects(convert_numeric=True)
print counts_converted.sort_index()
производит следующий вывод:
1 1
10 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
dtype: int64
Почему последний оператор печати не Рассортируйте индекс 1-10?
Мне нужно заставить объект dtype объект, когда считывается файл csv, чтобы преодолеть некоторые проблемы с обнаружением смешанных символов, даты и числовых форматов в столбцах, поэтому удаление этого оператора не будет работать для меня.
Я думал, что могу просто преобразовать серию в числовое, но, похоже, это не работает.
Редактирование вопроса, так как комментирование не позволяло мне использовать клавишу «Ввод», не публикуя комментарий ... [Ahh, нашел много длинного разговора об этой функции. Shift-Enter работает.]
@ EdChum предлагает решение для упрощенного случая, но не работает с производственными данными. Рассмотрим несколько менее простой файл данных:
wrong,right
8,a
7,b
6,c
3,d
1,
2,f
4,g
5,h
9,i
10,j
,k
11,l
Пустое значение на второй до последней строки вызывает ошибку «не может конвертировать поплавок NaN в целое.»
У меня есть много NaNs (все пустые), которые нужно хранить и подсчитывать в значении_сочетания.
Другие пустые ячейки, похоже, появляются как очень большие отрицательные числа (т. Е. -5226413792388707240) после литья в int64.
Извините заранее за любую тупость с моей стороны! Спасибо за помощь.
Вы читали значение, как 'object' это делает значение' str' в сущности, вы называете 'value_counts' который затем устанавливает индекс в ваши значения, затем вызывается 'convert_objects', но это не имеет никакого эффекта, так как это ваш индекс, который нуждается в преобразовании – EdChum