在数据框中移动列

扎南

我有一个熊猫数据框为:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章