根据A列中的值,将C列和D列中的值移到pandas数据帧的右侧

时间:2017-01-09 09:45:51

标签: pandas dataframe

如何根据以下数据集实现所需结果?

        A     B      C      D      E       
1    apple    5      2     20    NaN
2    orange   2      6     30    NaN
3    apple    6      1     40    NaN
4    apple    10     3     50    NaN
5    banana   8      9     60    NaN

期望的结果:

        A     B      C      D      E       
1    apple    5    NaN      2     20
2    orange   2      6     30    NaN
3    apple    6    NaN      1     40    
4    apple    10   NaN      3     50    
5    banana   8      9     60    NaN

1 个答案:

答案 0 :(得分:0)

IIUC你可以在感兴趣的行上使用np.roll,这里我们只需要选择'A'为'apple'的行,然后选择roll这些行按行排列回来:

In [14]:    
df.loc[df['A']=='apple', 'C':] = np.roll(df.loc[df['A']=='apple', 'C':], 1,axis=1)
df

Out[14]:
        A   B    C   D     E
1   apple   5  NaN   2  20.0
2  orange   2  6.0  30   NaN
3   apple   6  NaN   1  40.0
4   apple  10  NaN   3  50.0
5  banana   8  9.0  60   NaN

请注意,因为您引入NaNdtype更改为float以允许此