如何将特定行中的数据从一列移动到下一列?

时间:2015-05-21 16:34:46

标签: python-2.7 pandas

python和pandas的新手。如何从一列到下一列的特定行获取数据?我试图使用.shift,但只能使整个列或行向上或向下移动。

输入:

import pandas as pd
​
df = pd.DataFrame({'data1':['a','a','b','b','a'], 
                   'data2':['one','two','one','two','one'], 
                   'data3':['65168','65498.5','nan','nan','nan'], 
                   'data4':['3645','95324','0.35468','.36546','16567']})
df

Out[5]:
  data1 data2   data3   data4
0   a   one    65168    3645
1   a   two    65498.5  95324
2   b   one    nan      0.35468
3   b   two    nan      0.36546
4   a   one    nan      16567

假设我想将行2,3,4,第'row4'列中的数据移动到行2,3,4,仅将列'data3'移动(.shift将移动整行或整列,直到我可以告诉)

期望的结果 -

  data1 data2   data3   data4
0   a   one    65168    3645
1   a   two    65498.5  95324
2   b   one    0.35468  nan
3   b   two    0.36546  nan
4   a   one    16567    nan

将从先前生成的.xlsx文件中读取实际数据。我只需要将特定索引的数据从一列移动到另一列。

谢谢你,祝你有愉快的一天!

1 个答案:

答案 0 :(得分:2)

您可以通过axis=1loc添加行标签选择来进行shift列选择,并且列选择将确保仅修改那些行和列:

In [12]:

df.loc[2:,['data3','data4']] = df.loc[2:,['data3','data4']].shift(-1,axis=1)
df
Out[12]:
  data1 data2    data3  data4
0     a   one    65168   3645
1     a   two  65498.5  95324
2     b   one  0.35468    NaN
3     b   two   .36546    NaN
4     a   one    16567    NaN