Python Pandas: правильный способ изменить десятичную запятую на десятичную точку в Pandas Dataframe? [Дубликат]

Так как sdk 23 или выше вводит новый способ запроса разрешений, поэтому, если вы запуститесь в Marshmallow, он покажет эту ошибку.

Решение: установите targetSdkVersion ниже 23 в файл манифеста, такой как thisroid: targetSdkVersion = "21"

15
задан EdChum 29 July 2015 в 12:48
поделиться

3 ответа

pandas.read_csv имеет параметр decimal для этого: doc

I.e. попробуйте:

df = pd.read_csv(Input, delimiter=";", decimal=",")
30
ответ дан stellasia 27 August 2018 в 04:25
поделиться

Отвечаю на вопрос о том, как изменить десятичную comma на десятичную dot с Pandon Pandas.

$ cat test.py 
import pandas as pd
df = pd.read_csv("test.csv", quotechar='"', decimal=",")
df.to_csv("test2.csv", sep=',', encoding='utf-8', quotechar='"', decimal='.')

, где мы указываем чтение в десятичном разделителе как запятую, а вывод разделитель указан как точка. Итак,

$ cat test.csv 
header,header2
1,"2,1"
3,"4,0"
$ cat test2.csv 
,header,header2
0,1,2.1
1,3,4.0

, где вы видите, что разделитель изменился на точку.

1
ответ дан hhh 27 August 2018 в 04:25
поделиться

Я думаю, что ранее упомянутый ответ включения decimal="," в pandas read_csv является предпочтительным вариантом.

Однако я обнаружил, что он несовместим с механизмом синтаксического анализа Python. например при использовании skiprow= read_csv вернется к этому движку и, следовательно, вы не сможете использовать skiprow= и decimal= в том же самом read_csv, насколько я знаю. Кроме того, мне не удалось фактически заставить оператор decimal= работать (возможно, из-за меня)

. Длинный путь, который я использовал для достижения того же результата, - это понимание списков, .replace и .astype. Главным недостатком этого метода является то, что он должен выполняться по одному столбцу за раз:

df = pd.DataFrame({'a': ['120,00', '42,00', '18,00', '23,00'], 
                'b': ['51,23', '18,45', '28,90', '133,00']})

df['a'] = [x.replace(',', '.') for x in df['a']]

df['a'] = df['a'].astype(float)

Теперь столбец a будет иметь ячейки типа float. Столбец b все еще содержит строки.

Обратите внимание, что используемая здесь .replace не является пандой, а встроенной версией Python. Версия Pandas требует, чтобы строка была точным совпадением или регулярным выражением.

3
ответ дан Lo_ 27 August 2018 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: