熊猫Python移动行

时间:2017-05-31 13:27:28

标签: pandas

我是Pandas的新手,我有一个csv文件,我希望每一行都移动2& 3到value1和value2列。有人可以帮帮我吗?我似乎无法弄明白。

data, value1,   value2

1.00        
2.00        
3.00        
4.00        
5.00        
6.00        
7.00        
8.00        
9.00    

输出会变成这个

one,    value1, value2

1.00    2.00    3.00        
4.00    5.00    6.00        
7.00    8.00    9.00    

2 个答案:

答案 0 :(得分:1)

您可以使用numpy方法reshape,然后使用pd.DataFrame转换回数据框并命名您的列。

pd.DataFrame(df.values.reshape(3,3), columns=['data','value1','value2'])

输出:

   data  value1  value2
0     1       2       3
1     4       5       6
2     7       8       9

答案 1 :(得分:1)

更一般的解决方案是使用MultiIndex.from_arrays numpy.arange的模数和底线划分创建unstack

print (df)
   data
0   1.0
1   2.0
2   3.0
3   4.0
4   5.0
5   6.0
6   7.0
7   8.0
8   9.0
9  10.0

a =  np.arange(len(df.index)) 
print (a)
[0 1 2 3 4 5 6 7 8 9]

df.index = pd.MultiIndex.from_arrays([a % 3, a // 3])
print (df)
     data
0 0   1.0
1 0   2.0
2 0   3.0
0 1   4.0
1 1   5.0
2 1   6.0
0 2   7.0
1 2   8.0
2 2   9.0
0 3  10.0
df1 = df['data'].unstack(0)
df1.columns=['data','value1','value2']
print (df1)
   data  value1  value2
0   1.0     2.0     3.0
1   4.0     5.0     6.0
2   7.0     8.0     9.0
3  10.0     NaN     NaN