0

我有一个混合了整数和字符串的数据框。

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

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

谢谢。

4

1 回答 1

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
于 2013-10-24T15:33:18.057 回答