Python 使用pandas和numpy平均表的指数

Python 使用pandas和numpy平均表的指数,python,pandas,numpy,Python,Pandas,Numpy,我已经和熊猫玩了几个小时了,我想知道是否有另一种更快的方法可以在你的表中添加一个额外的列,其中包含该行的平均值?我正在创建一个包含平均值的新列表,然后将其合并到数据框中 这是我的代码: import numpy as np import pandas as pd userdata={"A":[2,5],"B":[4,6]} tab=pd.DataFrame((userdata), columns=["A","B"]) lst=[np.mean([tab.loc[i,"A"],tab.loc[i,

我已经和熊猫玩了几个小时了,我想知道是否有另一种更快的方法可以在你的表中添加一个额外的列,其中包含该行的平均值?我正在创建一个包含平均值的新列表,然后将其合并到数据框中

这是我的代码:

import numpy as np
import pandas as pd
userdata={"A":[2,5],"B":[4,6]}
tab=pd.DataFrame((userdata), columns=["A","B"])
lst=[np.mean([tab.loc[i,"A"],tab.loc[i,"B"]]) for i in range(len(tab.index))]
tab["Average of A and B"]=pd.DataFrame(lst)
tab
尝试
df.mean(1)
assign
df.平均值(1)
告诉熊猫沿
轴=1
(行)计算平均值<代码>轴=0是默认值

df.assign(Mean=df.mean(1))
这将生成带有添加列的
df
副本

更改现有数据帧的步骤

df['Mean'] = df.mean(1)

演示

tab.assign(Mean=tab.mean(1))

   A  B  Mean
0  2  4   3.0
1  5  6   5.5

NumPy解决方案是使用底层阵列数据来提高性能-

tab['average'] = tab.values.mean(1)
选择特定列,如
'A'
'B'
-

tab['average'] = tab[['A','B']].values.mean(1)
运行时测试-

In [41]: tab = pd.DataFrame(np.random.randint(0,9,(10000,10)))

# @piRSquared's soln
In [42]: %timeit tab.assign(Mean=tab.mean(1))
1000 loops, best of 3: 615 µs per loop

In [43]: tab = pd.DataFrame(np.random.randint(0,9,(10000,10)))

In [44]: %timeit tab['average'] = tab.values.mean(1)
1000 loops, best of 3: 297 µs per loop


In [37]: tab = pd.DataFrame(np.random.randint(0,9,(10000,100)))

# @piRSquared's soln
In [38]: %timeit tab.assign(Mean=tab.mean(1))
100 loops, best of 3: 4.71 ms per loop

In [39]: tab = pd.DataFrame(np.random.randint(0,9,(10000,100)))

In [40]: %timeit tab['average'] = tab.values.mean(1)
100 loops, best of 3: 3.6 ms per loop