我有一个包含整数和字符串的数据框。
In [81]: df
Out[81]:
0 1
0 1 hi
1 3 4
在整个帧中获取仅数字总和的最简单方法是什么?在上面的例子中,我期望得到8的结果(即,总结忽略'hi')。
如果数据框只有数字,似乎我可以做df.sum()。sum()或df.as_matrix()。sum()。
但是,由于我有混合类型,sum()似乎没有做我想要的:
In [82]: df.sum()
Out[82]:
0 4
dtype: int64
使用numeric_only标志似乎没有任何改变。
我注意到如果我指定轴,我可以得到正确的结果。
In [96]: df.sum(axis=0).sum() + df.sum(axis=1).sum()
Out[96]: 8
但我想知道是否有更简单的方法可以做到这一点。
感谢。
答案 0 :(得分:2)
您可以执行此操作,但请记住dtypes是每列。因此,在同一列中保留混合数据有点令人困惑。
In [10]: df = DataFrame([[1,'hi'],[3,4]])
In [11]: df.dtypes
Out[11]:
0 int64
1 object
dtype: object
In [12]: df.convert_objects(convert_numeric=True)
Out[12]:
0 1
0 1 NaN
1 3 4
In [13]: df.convert_objects(convert_numeric=True).unstack().sum()
Out[13]: 8.0