python-3.x - Pandas 数据框所有列的平均值?

标签 python-3.x pandas python-3.4

我正在尝试计算 DataFrame 的所有列的平均值,但看起来第 6 行的 B 列中有一个值阻止计算 C 列的平均值。为什么?

import pandas as pd
from decimal import Decimal
d = [
    {'A': 2, 'B': None, 'C': Decimal('628.00')},
    {'A': 1, 'B': None, 'C': Decimal('383.00')},
    {'A': 3, 'B': None, 'C': Decimal('651.00')},
    {'A': 2, 'B': None, 'C': Decimal('575.00')},
    {'A': 4, 'B': None, 'C': Decimal('1114.00')},
    {'A': 1, 'B': 'TEST', 'C': Decimal('241.00')},
    {'A': 2, 'B': None, 'C': Decimal('572.00')},
    {'A': 4, 'B': None, 'C': Decimal('609.00')},
    {'A': 3, 'B': None, 'C': Decimal('820.00')},
    {'A': 5, 'B': None, 'C': Decimal('1223.00')}
]

df = pd.DataFrame(d)

In : df
Out:
   A     B        C
0  2  None   628.00
1  1  None   383.00
2  3  None   651.00
3  2  None   575.00
4  4  None  1114.00
5  1  TEST   241.00
6  2  None   572.00
7  4  None   609.00
8  3  None   820.00
9  5  None  1223.00

测试:
# no mean for C column
In : df.mean()
Out:
A    2.7
dtype: float64

# mean for C column when row 6 is left out of the DF
In : df.head(5).mean()
Out:
A      2.4
B      NaN
C    670.2
dtype: float64

# no mean for C column when row 6 is part of the DF
In : df.head(6).mean()
Out:
A    2.166667
dtype: float64

数据类型:
In : df.dtypes
Out:
A     int64
B    object
C    object
dtype: object

In : df.head(5).dtypes
Out:
A     int64
B    object
C    object
dtype: object

最佳答案

如果您只需要带有数字的列,则可以使用特定的列:

In [90]: df[['A','C']].mean()
Out[90]: 
A      2.7
C    681.6
dtype: float64

或者在评论中将类型更改为@jezrael 建议:
df['C'] = df['C'].astype(float)

大概 df.mean试图将所有对象转换为数字,如果它掉下来,那么它会回滚并只计算实际数字

关于python-3.x - Pandas 数据框所有列的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835926/

相关文章:

python - 仅删除组内的重复项

python - Pandas:如何根据另一列中的重复行找到一列的平均值?

Python Pandas 将 Dataframe 列向下移动到行中(重置列上的索引?)

python - 类型错误 : 'dict' does not Support the Buffer Interface

python - 使用 Python 就地重写文件

python-3.x - 捕获python3中子进程的所有输出

python - 如何为特定 work_item 的不同阶段设置时间差

python - Python 3.4 中的多处理被破坏了吗?

python - Sphinx 找不到我的 python 文件。说 'no module named ...'

python - 将浮点四舍五入到一位小数(具体问题)