为了账号安全,请及时绑定邮箱和手机立即绑定

Python 每三行到列使用 Pandas

Python 每三行到列使用 Pandas

宝慕林4294392 2021-08-17 16:58:09
我有一个文本文件,其中包含每 3 行重复一次的数据。可以说是hash,directory,sub directory。数据如下所示:a3s2d1f32a1sdf321asdfDir_321321Dir2_asdfs21a3s21d3f21as32d1fDir_65465Dir2_werqasd21231asdfa3s21dDir_76541Dir2_wbzxc....我创建了一个 python 脚本来获取数据,每 3 行创建一列:import pandas as pddf1 = pd.read_csv('RogTest/RogTest.txt', delimiter = "\t", header=None)df2 = df1[df1.index % 3 == 0]df2 = df2.reset_index(drop=True) df3 = df1[df1.index % 3 == 1]df3 = df3.reset_index(drop=True)df4 = df1[df1.index % 3 == 2]df4 = df4.reset_index(drop=True)df5 = pd.concat([df2, df3], axis=1)df6 = pd.concat([df5, df4], axis=1)#Rename columnsdf6.columns = ['Hash', 'Dir_1', 'Dir_2']#Write to csvdf6.to_csv('RogTest/RogTest.csv', index=False, header=True)   这工作正常,但我很好奇是否有更有效的方法来做到这一点,也就是更少的代码?
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您可以使用:


df_final = pd.DataFrame(np.reshape(df.values,(3, df.shape[0]/3)))

df_final.columns = ['Hash', 'Dir_1', 'Dir_2']

输出:


                    Hash       Dir_1       Dir_2

0  a3s2d1f32a1sdf321asdf  Dir_321321   Dir2_asdf

1   s21a3s21d3f21as32d1f   Dir_65465   Dir2_werq

2     asd21231asdfa3s21d   Dir_76541  Dir2_wbzxc


查看完整回答
反对 回复 2021-08-17
  • 1 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信