Python 2.7 高效遍历数据帧索引
我想创建一个0..9行长的新数据帧,它有一列“avg”,第N行的值为average(old[N]['a'],old[N]['B']..old[N]['D']) 我对熊猫不太熟悉,所以我所有的想法都是关于如何做到这一点的。创建和填充新表的有效方法是什么?调用df并传递paramPython 2.7 高效遍历数据帧索引,python-2.7,pandas,Python 2.7,Pandas,我想创建一个0..9行长的新数据帧,它有一列“avg”,第N行的值为average(old[N]['a'],old[N]['B']..old[N]['D']) 我对熊猫不太熟悉,所以我所有的想法都是关于如何做到这一点的。创建和填充新表的有效方法是什么?调用df并传递paramaxis=1以计算行平均值,然后可以将其作为数据传递给DataFramector: import pandas as pd from numpy.random import randn oldn = pd.DataFram
axis=1
以计算行平均值,然后可以将其作为数据传递给DataFrame
ctor:
import pandas as pd
from numpy.random import randn
oldn = pd.DataFrame(randn(10, 4), columns=['A', 'B', 'C', 'D'])
如果您想要特定列的平均值,请使用以下命令。否则您可以使用@EdChum提供的答案
In [128]:
new_df = pd.DataFrame(data = oldn.mean(axis=1), columns=['avg'])
new_df
Out[128]:
avg
0 0.541550
1 0.525518
2 -0.492634
3 0.163784
4 0.012363
5 0.514676
6 -0.468888
7 0.334473
8 0.669139
9 0.736748
或
谢谢最后我使用了它的一个变体,向它传递了一个包含几列描述性统计数据的dict。setupDict={'mean':oiDM.mean(轴=1),'upper':(oiDM.std(轴=1)+oiDM.mean(轴=1)),'lower':(-oiDM.std(轴=1)+oiDM.mean(轴=1))}图表DM=pd.DataFrame(数据=setupDict)
oldn['Avg'] = oldn.apply(lambda v: ((v['A']+v['B']+v['C']+v['D']) / 4.), axis=1)
old['Avg'] = oldn.apply(lambda v: ((v[['A','B','C','D']]).sum() / 4.), axis=1)
print oldn
A B C D Avg
0 -0.201468 -0.832845 0.100299 0.044853 -0.222290
1 1.510688 -0.955329 0.239836 0.767431 0.390657
2 0.780910 0.335267 0.423232 -0.678401 0.215252
3 0.780518 2.876386 -0.797032 -0.523407 0.584116
4 0.438313 -1.952162 0.909568 -0.465147 -0.267357
5 0.145152 -0.836300 0.352706 -0.794815 -0.283314
6 -0.375432 -1.354249 0.920052 -1.002142 -0.452943
7 0.663149 -0.064227 0.321164 0.779981 0.425017
8 -1.279022 -2.206743 0.534943 0.794929 -0.538973
9 -0.339976 0.636516 -0.530445 -0.832413 -0.266579