猿问

Python 每三行到列使用 Pandas

我有一个文本文件,其中包含每 3 行重复一次的数据。可以说是hash,directory,sub directory。数据如下所示:


a3s2d1f32a1sdf321asdf

Dir_321321

Dir2_asdf

s21a3s21d3f21as32d1f

Dir_65465

Dir2_werq

asd21231asdfa3s21d

Dir_76541

Dir2_wbzxc

....

我创建了一个 python 脚本来获取数据,每 3 行创建一列:


import pandas as pd


df1 = 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 columns

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

#Write to csv

df6.to_csv('RogTest/RogTest.csv', index=False, header=True)   

这工作正常,但我很好奇是否有更有效的方法来做到这一点,也就是更少的代码?


宝慕林4294392
浏览 268回答 1
1回答

Smart猫小萌

您可以使用: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_20  a3s2d1f32a1sdf321asdf  Dir_321321   Dir2_asdf1   s21a3s21d3f21as32d1f   Dir_65465   Dir2_werq2     asd21231asdfa3s21d   Dir_76541  Dir2_wbzxc
随时随地看视频慕课网APP

相关分类

Python
我要回答