Pandas DataFrame中位数功能

时间:2018-12-16 23:36:31

标签: python pandas indexing axis median

如果我有Pandas DataFrame并想计算每列的中位数,则看来axis = 1应该按列给出中位数(根据文档)。但实际上,axis = 0给出了列的中位数。这是一个简单的可复制示例:

import pandas as pd

my_data = [[1.1, 2.2, 3.3], [1.2, 2.3, 3.4], [1.3, 2.4, 3.5]]
df = pd.DataFrame(my_data)
print(df.head())

print("\nTry to calculate median with axis=1\n")

print(df.median(axis=1))

它按行显示中位数。将其更改为axis = 0将按列显示中位数。这是否与为DataFrame设置索引的方式有关?

2 个答案:

答案 0 :(得分:1)

它可以完成预期的工作,axis = 1意味着在每行应用该函数。您可以从另一个例子中看到

>>> print(df.sum(axis = 1))
0    6.6
1    6.9
2    7.2
dtype: float64

或等效地

>>> print(df.apply(sum, axis = 1))
0    6.6
1    6.9
2    7.2
dtype: float64

您可以在documentation

中看到
axis : {0 or ‘index’, 1 or ‘columns’}, default 0

Axis along which the function is applied:

0 or ‘index’: apply function to each column.
1 or ‘columns’: apply function to each row.

因此,如果要计算每行列的平均值,则应使用axis = 0

答案 1 :(得分:0)

一些熊猫函数的轴= 0和轴= 1并不总是组成的,所以我建议

df.median(axis='columns')
0    2.2
1    2.3
2    2.4
dtype: float64