Панды: почему данные с плавающей точкой в ​​столбце csv иногда становятся объектами после импорта? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть 2 CSV-файла с одинаковыми столбцами , но различными данными .После импорта их в панды dtype столбца cost в одном из них float, но object в другом.

Я нашел аналогичный вопрос , в данном случаеответ "это было ошибка в <= 0,12 </a> (но исправлено в 0,13)" по словам Энди Хейдена.

Но вопросы таковы: оба моих файла csv имеют похожееминимальное число, 1.000000e-02 ни blank value.

(я использую Python 3.7, Pandas 0.23.4 на PyCharm2018.2)

# csv 1: before pd.to_numeric
count     174526
unique     84873
top         0.41
freq         505
Name: cost, dtype: object

# csv 1: after pd.to_numeric
count    1.745260e+05
mean     3.608746e+04
std      4.690326e+05
min      1.000000e-02
25%      1.040000e+01
50%      1.190400e+02
75%      1.433350e+03
max      5.400000e+07
Name: cost, dtype: float64

# csv 2: 
count    2.578860e+05
mean     1.588632e+04
std      3.295925e+05
min      1.000000e-02
25%      2.820000e+00
50%      2.109000e+01
75%      2.426200e+02
max      6.030000e+07
Name: cost, dtype: float64

В другой точкеПосмотрите, если я разбью свой код на 2 части, все нормально для csv2 :

df = pd.read_csv('file_name.csv',low_memory=False)
df = df[df.Cloumn1 != 'Value1']
df['cost_T'] = df['cost'] / 1000
df.to_csv('new_file_name.csv', index=False)
"""
TypeError: unsupported operand type(s) for /: 'str' and 'int'
"""
df = pd.read_csv('file_name.csv',low_memory=False)
df = df[df.Cloumn1 != 'Value1']
df.to_csv('new_file_name.csv', index=False)

df = pd.read_csv('new_file_name.csv', low_memory=False)
df['cost_T'] = df['cost'] / 1000
df.to_csv('final_file_name.csv', index=False)
"""
everything is fine.
"""

Если у кого-то есть идеи, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...