У меня есть следующий фрейм данных:
>>> data = {'col_1': ['1','2','3'], 'col_2': ['a', 'b', 'c', 'd']}
>>> df=pd.DataFrame.from_dict(data) # <== I want to modify this statement
>>> df.dtypes
col_1 int64
col_2 object
dtype: object
Обратите внимание, что col_1
был выведен как столбец int64
. Есть ли простое, что я могу сделать "forceType = object" для каждого столбца, который я имею? Данные уже предварительно отформатированы, и мне не нужны панды, чтобы что-то размечать.
Почему бы и нет:
df=df.astype(str)
И теперь df
столбцы будут всех типов object
.
Обновить:
df=df.apply(str)
%A, %d %b %Y %H:%M:%S %z
, и я не хочу потерять это форматирование.
df.apply(str)
ValueError: arrays must all be same length
. Даже если вы изменитеdata
на что-то вродеdata = {'col_1': ['1','2','3','4'], 'col_2': ['a', 'b', 'c', 'd']}
,pd.DataFrame.from_dict(data)
возвращает столбцы сobject
dtype (используя версию 0.24.0 Pandas). Не могли бы вы проверить свой пример, чтобы сделать проблему воспроизводимой?