отдельная числовая и категориальная переменная в панде - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть огромный список данных в spark, и я взял только его заголовки и сохранил их в фрейме данных pandas.

Теперь я хочу сделать из него другой список, чтобы разделить категориальные и числовые

df2 = df.dtypes
df3 = pd.DataFrame(df2)
print(df3)

df4= df3.filter(df3[1] = 'String')

эта сеть состояний выдает ошибку:

SyntaxError: ключевое слово не может быть выражением

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Вам не нужны панды, используйте pySpark dataframe.describe () , чтобы найти все числовые и строки столбцы (это пропустит типы столбцов, такие как дата , отметка времени , массив , struct и т. Д.), А затем отфильтровать столбцы StringType () , используя информацию изdf.dtypes:

from datetime import datetime
df = spark.createDataFrame([ (1, 12.3, 1.5, 'test', 13.23, datetime(2019,9,23)) ], ['i1', 'd2', 'f3', 's4', 'd5', 'dt'])
# DataFrame[i1: bigint, d2: double, f3: double, s4: string, d5: double, dt: timestamp]

# find all numeric and string columns from df (remove the first column which is `summary`)
cols = df.limit(100).describe().columns[1:]
# ['i1', 'd2', 'f3', 's4', 'd5'] 

# get a mapping of column vs dtypes of the df:
dtype_mapping = dict(df.dtypes)
#{'d2': 'double',
# 'd5': 'double',
# 'dt': 'timestamp',
# 'f3': 'double',
# 'i1': 'bigint',
# 's4': 'string'}

# filter out string-type from cols using the above mapping:
numeric_cols = [ c for c in cols if dtype_mapping[c] != 'string' ]
# ['i1', 'd2', 'f3', 'd5']
0 голосов
/ 24 сентября 2019

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

df.loc[:,df.dtypes==np.object]
0 голосов
/ 24 сентября 2019

Наряду с этим необходимо другое '=', вам не хватает нескольких вещей, например, индекс, к которому вы пытаетесь получить доступ, равен '0', а не '1'.Кроме того, в пандах DataFrame нет типа данных «String», это «объект».Вы можете попробовать что-то вроде этого:

df2 = df.dtypes
df3 = pd.DataFrame(df2)
print(df3)
df4 = df3.filter(df3.iloc[:,0] == 'object')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...