Найти длину самого длинного столбца в пандах - PullRequest
0 голосов
/ 06 октября 2018

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

data = {'shoe': ['a', 'b'], 'fury': ['c','d','e','f'], 'chaos': ['g','h', 'i']}
dataFrame = pandas.DataFrame({k:pandas.Series(v) for k, v in data.items()})

Вывод:

  shoe fury chaos
0    a    c     g
1    b    d     h
2  NaN    e     i
3  NaN    f   NaN

Есть ли способ найти длину самого длинного столбца в фрейме данных?В этом случае это должно быть 4. Есть ли у pandas метод, доступный для подобных целей?

Спасибо за чтение

Ответы [ 6 ]

0 голосов
/ 06 октября 2018

Вы можете рассчитать последний действительный индекс:

LVI = df.last_valid_index()         # 3

Чтобы получить длину самого длинного столбца, вы можете использовать pd.Index.get_loc:

length = df.index.get_loc(LVI) + 1  # 4

Если ваш индекс по умолчанию pd.IndexRange, тогда вы можете просто использовать LVI + 1.

0 голосов
/ 06 октября 2018

@ ответы ученика и @ Вена самые лучшие, но решение на python будет:

print(len(max(dataFrame,key=lambda x: dataFrame[x].count())))

Я бы определенно не рекомендовал бы это, потому что это неэффективно, это последний вариант, который я выберу: -) хотя бы работает: -)

0 голосов
/ 06 октября 2018

@ ответ ученика лучше, но в качестве альтернативы:

>>> dataFrame.notnull().sum(0).max()
4
0 голосов
/ 06 октября 2018

Вы можете применить лямбду к вашим векторам:

df.apply(lambda x: len(x.dropna()))

chaos    3
fury     4
shoe     2
dtype: int64

df.apply(lambda x: len(x.dropna())).max()
4
0 голосов
/ 06 октября 2018

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

len(df)
Out[368]: 4
0 голосов
/ 06 октября 2018

Вы можете попробовать использовать count с последующим max.Согласно документации pandas для подсчета :

Подсчет ячеек без NA для каждого столбца или строки.

print(dataFrame.count().max())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...