У меня есть фрейм данных, где большинство столбцов имеют тип varchar / object. Длина столбца сильно варьируется и может быть в диапазоне от 3 до 1000+. Теперь для каждого столбца я хочу измерить максимальную длину.
Я знаю, как рассчитать максимальную длину для цв. Если его varchar то:
max(df.char_col.apply(len))
, а если его номер (float8 или int64), то:
max(df.num_col.map(str).apply(len))
Но мой фрейм данных содержит сотни столбцов, и я хочу рассчитать максимальную длину для всех столбцов одновременно. Проблема в том, что существуют разные типы данных, и я не знаю, как сделать все сразу.
Итак, вопрос 1: Как получить максимальную длину столбца для каждого столбца в кадре данных
Теперь я пытаюсь сделать это только для столбцов типа varchar / object, используя следующий код:
xx = df.select_dtypes(include = ['object'])
for col in [xx.columns.values]:
maxlength = [max(xx.col.apply(len))]
Я выбрал только столбцы типа объекта и попытался написать цикл for. Но это не работает. вероятно, использование apply () внутри цикла for не очень хорошая идея.
Вопрос 2. Как получить максимальную длину каждого столбца только для столбцов типа объекта
Пример кадра данных:
d1 = {'name': ['john', 'tom', 'bob', 'rock', 'jimy'], 'DoB': ['01/02/2010', '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'Address': ['NY', 'NJ', 'PA', 'NY', 'CA'], 'comment1': ['Very good performance', 'N/A', 'Need to work hard', 'No Comment', 'Not satisfactory'], 'comment2': ['good', 'Meets Expectation', 'N', 'N/A', 'Incompetence']}
df1 = pd.DataFrame(data = d1)
df1['month'] = pd.DatetimeIndex(df1['DoB']).month
df1['year'] = pd.DatetimeIndex(df1['DoB']).year