Я хочу изменить тип данных, который может быть введен в пустой фрейм данных Pandas. Итак, я попробовал следующий подход, но он не работает. Может кто-нибудь, пожалуйста, дайте мне подсказку, как решить эту проблему?

columns=['A', 'B', 'C', 'D', 'E','F']


df = pd.DataFrame(columns=columns)

>>> df
Empty DataFrame
Columns: [A, B, C, D, E, F]
Index: []

df[[0]]=df[[0]].astype(str)
df[[1]]=df[[1]].astype(str)
df[[2]]=df[[2]].astype(int)
df.iloc[:,3:6]=df.iloc[:,3:6].astype(float)
1
Kingindanord 31 Авг 2017 в 13:42

3 ответа

Лучший ответ

Вы хотите создать серию или словарь с нужными вам типами, а затем использовать astype

columns = list('ABCDEF')
df = pd.DataFrame(columns=columns)

dtypes = {k: str for k in columns[:2]}
dtypes.update({columns[2]: int})
dtypes.update({k: float for k in columns[3:]})

df = df.astype(dtypes)

df.dtypes

A     object
B     object
C      int64
D    float64
E    float64
F    float64
dtype: object
4
piRSquared 31 Авг 2017 в 13:10

По умолчанию все ваши столбцы будут иметь тип «объект», поэтому вам не нужно заставлять столбцы иметь тип string как таковой. Для других типов столбцов что-то подобное может работать?

df[['C']] = df[['C']].apply(pd.to_numeric)
0
ShreyasG 31 Авг 2017 в 10:52

Я также столкнулся с этой проблемой изначально, но я нашел решение:

  1. Преобразуйте столбец фрейма данных в структуру данных списка в Python.
  2. Затем преобразуйте список в серию после импорта numpy пакета.
  3. Используя функцию astype(), преобразуйте в нужный тип данных.

Код:

list = list(data['unknown'])
series = pd.Series(list)
seriesOfTypeBool = g.astype(np.bool)
data['unknown'] = seriesOfTypeBool` <br>

И упрощенная версия:

data['Action'] = pd.Series(list(data['Action'])).astype(np.bool)
0
Elletlar 10 Фев 2019 в 22:58