Python: как получить имена столбцов из pandas dataframe - но только для непрерывного типа данных?
Я использую df.columns.values, чтобы составить список имен столбцов, которые затем перебираю и обрабатываю диаграммы и т.д.... но когда я это установил, я упустил нечетные столбцы в df. Теперь я бы предпочел не просто удалить эти столбцы из df (или его копии). Вместо этого я хотел бы найти гладкий способ устранить их из списка имен столбцов.
Теперь у меня есть:
names = df.columns.values
то, что я хотел бы получить, это то, что ведет себя как:
names = df.columns.values(column_type=float64)
Есть ли какой-нибудь пятнистый способ сделать это? Я полагаю, что я мог бы сделать копию df и отбросить эти нечисловые столбцы, прежде чем делать columns.values, но это наводит меня как неуклюжие.
Приветствуйте любые входы/предложения. Благодарю.
Ответы
Ответ 1
Кто-то даст вам лучший ответ, чем это возможно, но одна вещь, которую я имею в виду, - это если все мои числовые данные являются объектами int64
или float64
, тогда вы можете создать dict типа данных столбца, а затем используйте значения для создания списка столбцов.
Так, например, в фрейме данных, где у меня есть столбцы типа float64
, int64
и object
, во-первых, вы можете посмотреть на типы данных так:
DF.dtypes
и если они соответствуют стандарту, согласно которому нечисловыми столбцами данных являются все типы object
(как они есть в моих данных), вы можете сделать следующее, чтобы получить список числовых столбцов:
[key for key in dict(DF.dtypes) if dict(DF.dtypes)[key] in ['float64', 'int64']]
Простое простое понимание. Ничего особенного. Опять же, однако, будет ли это работать для вас, будет зависеть от того, как вы настроите свой DataFrame...
Ответ 2
dtypes - это серия Pandas.
Это означает, что он содержит атрибуты индекса и значений.
Если вам нужны только имена столбцов:
headers = df.dtypes.index
он вернет список, содержащий имена столбцов "df" dataframe.
Ответ 3
В функции 0.14.1, select_dtypes
появилась новая функция, чтобы выбрать столбцы по dtype, предоставив список типов, которые нужно включить или исключить.
Например:
df = pd.DataFrame({'a': np.random.randn(1000),
'b': range(1000),
'c': ['a'] * 1000,
'd': pd.date_range('2000-1-1', periods=1000)})
df.select_dtypes(['float64','int64'])
Out[129]:
a b
0 0.153070 0
1 0.887256 1
2 -1.456037 2
3 -1.147014 3
...