如何将整个DataFrame与混合类型相加?

时间:2013-10-24 15:26:02

标签: python pandas

我有一个包含整数和字符串的数据框。

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

但我想知道是否有更简单的方法可以做到这一点。

感谢。

1 个答案:

答案 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