我有一个熊猫数据框为:
Date normPwr_0 normPwr_1 tempNorm_1 tempNorm_2 tempNorm_3 tempNorm_0
6/15/2019 0.89 0.94 0.83 0.88 0.92 0.82
6/16/2019 0.97 0.89 0.82 0.83 0.88 0.97
6/17/2019 0.97 0.97 0.97 0.82 0.83 2,188.18
我只想移动列的列值tempNorm
。我想要的输出是:
Date normPwr_0 normPwr_1 tempNorm_2 tempNorm_3 tempNorm_1
6/15/2019 0.89 0.94 0.83 0.88 0.82
6/16/2019 0.97 0.89 0.82 0.83 0.97
6/17/2019 0.97 0.97 0.97 0.82 2,188.18
棘手的部分是各tempNorm
不相同的列名称,以至于有时候我有[tempNorm_1 tempNorm_2 tempNorm_3 tempNorm_0]
,有时我有[tempNorm_4 tempNorm_5 tempNorm_6 tempNorm_7 tempNorm_0]
当列中有[tempNorm_4 tempNorm_5 tempNorm_6 tempNorm_7 tempNorm_0]
我想要的列时,输出数据框中将是[tempNorm_4 tempNorm_5 tempNorm_6 tempNorm_7]
基本上,我试图在列名称中移动数据框,tempNorm
其中包含所有来自的值tempNorm_0
都被推入下一个较高名称的列,而最高名称列被丢弃。
我不确定如何以一种干净的pythonic方式来解决这个问题。
编辑:
对于[tempNorm_4 tempNorm_5 tempNorm_6 tempNorm_7 tempNorm_0]
,将from的值tempNorm_0
移到tempNorm_4
;将from的值tempNorm_4
移到tempNorm_5
等。tempNorm_7
数据被丢弃,并被来自tempNorm_6
IIUC,您要roll
在名称列中添加tempNorm_
最后一个:
# get all the tempNorm columns
tmp_cols = np.array([col for col in df.columns if 'tempNorm' in col])
# roll and rename:
df.rename(columns={col:new_col for col, new_col in zip(tmp_cols,np.roll(tmp_cols,-1) ) },
inplace=True)
# drop the last tempNorm
df.drop(tmp_cols[-1], axis=1, inplace=True)
输出:
Date normPwr_0 normPwr_1 tempNorm_2 tempNorm_3 tempNorm_1
0 6/15/2019 0.89 0.94 0.83 0.88 0.82
1 6/16/2019 0.97 0.89 0.82 0.83 0.97
2 6/17/2019 0.97 0.97 0.97 0.82 2,188.18
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句