Заставить все столбцы быть строками в пандах

1

У меня есть следующий фрейм данных:

>>> 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" для каждого столбца, который я имею? Данные уже предварительно отформатированы, и мне не нужны панды, чтобы что-то размечать.

  • 1
    Пример, который вы опубликовали, должен был вызвать 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). Не могли бы вы проверить свой пример, чтобы сделать проблему воспроизводимой?
Теги:
pandas

1 ответ

0

Почему бы и нет:

df=df.astype(str)

И теперь df столбцы будут всех типов object.

Обновить:

df=df.apply(str)
  • 1
    верно, но на практике у меня будет около 100 столбцов, и я не хочу потерять оригинальное форматирование. Например, у меня может быть дата в формате %A, %d %b %Y %H:%M:%S %z , и я не хочу потерять это форматирование.
  • 0
    @ David542 Тогда как насчет: df.apply(str)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню