Python 对数据帧的备用列求和
我有一个数据框,看起来像Python 对数据帧的备用列求和,python,numpy,pandas,Python,Numpy,Pandas,我有一个数据框,看起来像 A 00:00 00:30 01:00 01:30 02:00 .....22:30 23:00 23:30 1 2 3 3 4 3 1 6 4 2 5 6 2 6 5 2 1 2 我在试着 A 00:00 01:00 02:00 ..... 23:00 1 6 6 7
A 00:00 00:30 01:00 01:30 02:00 .....22:30 23:00 23:30
1 2 3 3 4 3 1 6 4
2 5 6 2 6 5 2 1 2
我在试着
A 00:00 01:00 02:00 ..... 23:00
1 6 6 7 7
2 7 8 11 3
在00:00
中添加列23:30
我尝试使用and,它对所有列求和。我怎样才能告诉它对每个备选列求和?我认为这应该有效:
In [261]:
df = pd.DataFrame(np.random.randn(5,6), columns=['00:00','00:30','01:00','01:30','02:00','02:30'])
df
Out[261]:
00:00 00:30 01:00 01:30 02:00 02:30
0 0.176952 1.161850 0.894800 -0.246474 1.252235 -0.816835
1 0.817057 -1.338584 -0.983922 -0.073771 -2.188114 1.819888
2 -0.637196 -0.429361 1.267454 0.040461 1.256472 -0.242053
3 0.270544 0.403675 0.890263 1.767279 1.380494 -1.349156
4 -0.752082 0.380903 -0.795439 1.176303 0.176784 0.693317
In [262]:
rhs = df.ix[:,1::2]
df.ix[:,::2] + pd.concat([rhs.ix[:,-1:],rhs.ix[:,:-1]],axis=1).values
Out[262]:
00:00 01:00 02:00
0 -0.639884 2.056650 1.005761
1 2.636945 -2.322505 -2.261885
2 -0.879249 0.838093 1.296933
3 -1.078612 1.293938 3.147772
4 -0.058764 -0.414535 1.353087
In [263]:
rhs
Out[263]:
00:30 01:30 02:30
0 1.161850 -0.246474 -0.816835
1 -1.338584 -0.073771 1.819888
2 -0.429361 0.040461 -0.242053
3 0.403675 1.767279 -1.349156
4 0.380903 1.176303 0.693317
因此,在您的情况下,由于列名中有30分钟的间隔,因此生成的df将使用lhs中的小时间隔列名和30分钟间隔中的值,并将这些值相加
因此,在这里,我们使用slice和step.ix[:,::2]
返回所有行,并在添加时步进列。我们使用.values
返回一个numpy数组,因为否则您将获得所有NaN
值,因为pandas将尝试在列名上对齐,而您将无法获得匹配项
当您想用
23:30
添加00:00
时,我们可以concat
将最后一列与其余列对齐,这样我们在添加列时得到列对齐方式肯定会有帮助,但如果您看到第一列和最后一列被相加。我认为这样做不行。请看更新的答案,这将最后一列与第一列到最后一列连接起来,以获得您想要的顺序