получить список столбцов данных pandas на основе типа данных

Если у меня есть фреймворк данных со следующими столбцами:

1. NAME object 2. On_Time object 3. On_Budget object 4. %actual_hr float64 5. Baseline Start Date datetime64[ns] 6. Forecast Start Date datetime64[ns] 

Я хотел бы иметь возможность сказать: вот кадр данных, дайте мне список столбцов типа Object или типа DateTime?

У меня есть функция, которая преобразует числа (Float64) в два десятичных знака, и я хотел бы использовать этот список столбцов dataframe определенного типа и запустить его через эту функцию, чтобы преобразовать их все в 2dp.

Может быть:

 For c in col_list: if c.dtype = "Something" list[] List.append(c)? 

5 Solutions collect form web for “получить список столбцов данных pandas на основе типа данных”

Если вам нужен список столбцов определенного типа, вы можете использовать groupby :

 >>> df = pd.DataFrame([[1, 2.3456, 'c', 'd', 78]], columns=list("ABCDE")) >>> df ABCDE 0 1 2.3456 cd 78 [1 rows x 5 columns] >>> df.dtypes A int64 B float64 C object D object E int64 dtype: object >>> g = df.columns.to_series().groupby(df.dtypes).groups >>> g {dtype('int64'): ['A', 'E'], dtype('float64'): ['B'], dtype('O'): ['C', 'D']} >>> {k.name: v for k, v in g.items()} {'object': ['C', 'D'], 'int64': ['A', 'E'], 'float64': ['B']} 

Начиная с pandas v0.14.1, вы можете использовать select_dtypes() для выбора столбцов по dtype

 In [2]: df = pd.DataFrame({'NAME': list('abcdef'), 'On_Time': [True, False] * 3, 'On_Budget': [False, True] * 3}) In [3]: df.select_dtypes(include=['bool']) Out[3]: On_Budget On_Time 0 False True 1 True False 2 False True 3 True False 4 False True 5 True False In [4]: mylist = list(df.select_dtypes(include=['bool']).columns) In [5]: mylist Out[5]: ['On_Budget', 'On_Time'] 

Вы можете использовать булевскую маску в атрибуте dtypes:

 In [11]: df = pd.DataFrame([[1, 2.3456, 'c']]) In [12]: df.dtypes Out[12]: 0 int64 1 float64 2 object dtype: object In [13]: msk = df.dtypes == np.float64 # or object, etc. In [14]: msk Out[14]: 0 False 1 True 2 False dtype: bool 

Вы можете посмотреть только те столбцы с желаемым dtype:

 In [15]: df.loc[:, msk] Out[15]: 1 0 2.3456 

Теперь вы можете использовать раунд (или что-то еще) и назначить его обратно:

 In [16]: np.round(df.loc[:, msk], 2) Out[16]: 1 0 2.35 In [17]: df.loc[:, msk] = np.round(df.loc[:, msk], 2) In [18]: df Out[18]: 0 1 2 0 1 2.35 c 

Использование dtype даст вам тип данных нужного столбца:

 dataframe['column1'].dtype 

если вы хотите знать типы данных всего столбца сразу , вы можете использовать множественное число dtype как dtypes :

 dataframe.dtypes 

Если вам нужен список только столбцов объектов, которые вы могли бы сделать:

 non_numerics = [x for x in df.columns \ if not (df[x].dtype == np.float64 \ or df[x].dtype == np.int64)] 

а затем, если вы хотите получить еще один список из числа:

 numerics = [x for x in df.columns if x not in non_numerics] 
  • Хотите знать diff среди pd.factorize, pd.get_dummies, sklearn.preprocessing.LableEncoder и OneHotEncoder
  • Предотвратите научную нотацию в морском ящике
  • Умножьте все столбцы в кадре данных Pandas вместе
  • Добавление листа2 в существующий excelfile из данных sheet1 с pandas python
  • Как получить столбец по номеру в Пандах?
  • Вертикальная линия в конце гистограммы CDF с использованием matplotlib
  • Самый быстрый способ вычисления подмножества корреляционной матрицы
  • Python: сокращает временную шкалу точности данных pandas
  • Python - лучший язык программирования в мире.