我是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
答案 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