[英]Data-frame manipulation in python
我有一个csv文件,其中包含a和b两列,如下所示:
a b
601 1
602 2
603 3
604 4
605 5
606 6
我想读取数据并将其保存在新的csv文件中,如下所示:
s id
601 1
602 1
603 1
604 2
605 2
606 2
我已经试过这段代码:
data=pd.read_csv('./dataset/test4.csv')
list=[]
i=0
while(i<6):
list.append(data['a'].iloc[i:i+3])
i+=3
df = pd.DataFrame(list)
print(df)
通过这个输出:
0 1 2 3 4 5
a 601.0 602.0 603.0 NaN NaN NaN
a NaN NaN NaN 604.0 605.0 606.0
首先,我需要将列表保存在数据框中,结果如下:
0 1 2 3 4 5
601.0 602.0 603.0 604.0 605.0 606.0
然后保存在一个csv文件中。 但是,我陷入了第一部分。
谢谢你的帮助。
假设在每3项a
构成一组中的b
,只是做所述索引一点整数除法。
data['b'] = (data.index // 3 + 1)
data
a b
0 601 1
1 602 1
2 603 1
3 604 2
4 605 2
5 606 2
保存为CSV很简单-您要做的就是调用df.to_csv(...)
。
只要您具有单调递增的整数索引,就可以按索引进行除法。 否则,您可以使用np.arange
(根据MaxU的建议):
data['b'] = np.arange(len(data)) // 3 + 1
data
a b
0 601 1
1 602 1
2 603 1
3 604 2
4 605 2
5 606 2
通过使用您的输出
df.stack().unstack()
Out[115]:
0 1 2 3 4 5
a 601.0 602.0 603.0 604.0 605.0 606.0
数据输入
df
0 1 2 3 4 5
a 601.0 602.0 603.0 NaN NaN NaN
a NaN NaN NaN 604.0 605.0 606.0
In [45]: df[['a']].T
Out[45]:
0 1 2 3 4 5
a 601 602 603 604 605 606
要么
In [39]: df.set_index('b').T.rename_axis(None, axis=1)
Out[39]:
1 2 3 4 5 6
a 601 602 603 604 605 606
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.