所以我有一个数据帧,称之为TABLE
,我正在使用Pandas和Python 2.7来分析它。它主要是分类数据所以现在我的目标是得到我的表的摘要,其中列出每个列名称和该列中值的平均长度。
示例表:
A B C E F
0 djsdd 973 348f NaN abcd
1 dsa 49 34h5 NaN NaN
然后我想要的输出就像:
Column AvgLength
A 4.0
B 2.5
C 4.0
E NaN
F 4.0
现在我遇到的第一个问题是数据集中有一些数值。我想我可以使用.astype(str)
来解决这个问题,所以我做了以下几点:
for k in TABLE:
print "%s\t %s"%(k,TABLE[k].astype(str).str.len().mean())
现在的问题是,我认为.astype(str)
正在将空值转换为字符串,因为我最终得到了以下输出:
Column AvgLength
A 4.0
B 2.5
C 4.0
E 3.0
F 3.5
请注意,包含空值的E列的平均长度为3,而F列的平均值为3.5。我的理解是因为它占用了字符串“NaN”的长度。
有没有办法做我想做的事情并忽略Null值?或者我应该采取一种完全不同的方法(我对熊猫很新)?
(我确实读过.dropna()
,但我不想省略所有可能包含空值的列,因为有些列可能在数据旁边有空值。我想忽略我的意思中的空值
答案 0 :(得分:3)
stack
获得系列作品
dropna
要摆脱NaN
astype(str).str.len()
获得长度
unstack().mean()
平均长度
reindex(TABLE.columns)
以确保我们获得所有原始列
TABLE.stack().dropna().astype(str).str.len().unstack().mean().reindex(TABLE.columns)
A 4.0
B 2.5
C 4.0
E NaN
dtype: float64