есть ли общий способ указать пандам использовать запятую (,) в качестве десятичных разделителей для преобразования типа из строки в число с плавающей запятой и т. д.?
import pandas as pd
from datetime import datetime
data = {
"col_str": ["a", "b", "c"],
"col_int": ["1", "2", "3"],
"col_float": ["1,2", "3,2342", "97837,8277"],
"col_float2": ["13,2", "3234,2342", "263,8277"],
"col_date": [datetime(2020, 8, 1, 0, 3, 4).isoformat(),
datetime(2020, 8, 2, 2, 4, 5).isoformat(),
datetime(2020, 8, 3, 6, 8, 4).isoformat()
]
}
conversion_dict = {
"col_str": str,
"col_int": int,
"col_float": float,
"col_float2": float,
"col_date": "datetime64"
}
df = pd.DataFrame(data=data)
print(df.dtypes)
df = df.astype(conversion_dict, errors="ignore")
print(df.dtypes)
print(df)
Приведенный выше пример возвращает столбцы объектов для col_float и col_float2 или выдает ошибку, если установлено значение errors.
Я хотел бы использовать метод astype() напрямую, не заменяя вручную запятые точками. Источник данных обычно возвращает числа с запятой в качестве десятичного разделителя, поскольку языковой стандарт установлен на немецкий.
Есть ли общий способ указать pandas как тип, что запятые в числах с плавающей запятой - или любой другой числовой тип данных с десятичными знаками - в порядке и должны быть преобразованы автоматически?
PS: я не могу использовать read_csv, где вы можете напрямую указать разделитель, потому что это база данных.
Заранее спасибо.
pd.to_numeric(df['col_float'].str.replace(',', '.'))
. IMO методыpd.to_XXX
лучше подходят для преобразования типов - person ALollz   schedule 20.08.2020