查找熊猫中最长列的长度

时间:2018-10-06 01:38:21

标签: python python-3.x pandas dataframe

当前,我具有以下数据框:

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 :(得分:5)

您可以尝试依次使用countmax。根据{{​​3}}:

  

为每一列或每一行计算非NA单元格。

print(dataFrame.count().max())

答案 1 :(得分:3)

由于您是通过dict创建数据帧的,这意味着最长的列等于df的长度,所以

len(df)
Out[368]: 4

答案 2 :(得分:1)

您可以将lambda应用于向量:

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

chaos    3
fury     4
shoe     2
dtype: int64

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

答案 3 :(得分:1)

@student和@Wen的答案是最好的,但是python解决方案是:

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

我绝对不建议这样做,因为它效率低下,这是我会选择的最后一个选项:-),至少它是可行的:-)

答案 4 :(得分:0)

@student的回答比较好,但是可以选择:

>>> dataFrame.notnull().sum(0).max()
4

答案 5 :(得分:0)

您可以计算最后一个有效索引:

LVI = df.last_valid_index()         # 3

要获取最长列的 length ,可以使用pd.Index.get_loc

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

如果您的索引是默认的pd.IndexRange,则只需使用LVI + 1