当前,我具有以下数据框:
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
是否具有可用于类似目的的方法?
感谢阅读
答案 0 :(得分:5)
您可以尝试依次使用count
和max
。根据{{3}}:
为每一列或每一行计算非NA单元格。
print(dataFrame.count().max())
答案 1 :(得分:3)
由于您是通过dict
创建数据帧的,这意味着最长的列等于df的长度,所以
len(df)
Out[368]: 4
答案 2 :(得分:1)
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
。