将一行/ n列转换为多行/ 3列python-pandas

时间:2018-12-14 12:02:21

标签: python dataframe transpose

我正在尝试将单行多列(.csv)转换为n-rowsx3列并将其保存在新文件(csv或txt)中

数据:

51.9596,-115.1437,6.0000,51.9596,-115.1285,6.0000,51.9686,-115.1588,6.0000,51.9686,-115.1437,10.5000,51.9686,-115.1285,10.5000,51.9686,-115.1134,8.0000,51.9776,-115.1891,7.5000,51.9776,-115.1740,7.5000,51.9776,-115.1588,7.5000,51.9776,-115.1437,8.0000,51.9776,-115.1285,8.0000,51.9776,-115.1134,8.0000,51.9866,-115.1891,7.0000

我想要:

52.9596,-118.1437,6.0000
51.9596,-115.1285,6.0000
54.9686,-119.1588,6.0000
53.9686,-119.1437,10.5000
54.9686,-117.1285,10.5000
55.9686,-111.1134,8.0000
56.9776,-112.1891,7.5000
57.9776,-117.1740,7.5000
58.9776,-112.1588,7.5000
59.9776,-117.1437,8.0000
50.9776,-114.1285,8.0000
50.9776,-115.1134,8.0000
50.9866,-116.1891,7.0000

代码:

import pandas as pd
df=pd.read_csv('~\datatest\datatest2.csv', sep=',')
for i in len (0, len(df), 3):
   df1=df
df1.to_csv('~\datatest\out.csv', sep=',')

3 个答案:

答案 0 :(得分:2)

根据我的理解,这应该可以解决问题:

import pandas as pd
df=pd.read_csv('~\datatest\datatest2.csv', sep=',')

#reshaping your dataframe as an array and storing it in df2
df2 = df.values.reshape(int(len(df.columns)/3), 3)

#converting df2 (that's currently an array) to a dataframe
df2 = pd.DataFrame.from_records(df2)

#exporting it
df2.to_csv(your_filepath, separator)

答案 1 :(得分:1)

SVC

答案 2 :(得分:0)

linelist = '''51.9596,-115.1437,6.0000,51.9596,-115.1285,6.0000,51.9686,-115.1588,6.0000,51.9686,-115.1437,10.5000,51.9686,-115.1285,10.5000,51.9686,-115.1134,8.0000,51.9776,-115.1891,7.5000,51.9776,-115.1740,7.5000,51.9776,-115.1588,7.5000,51.9776,-115.1437,8.0000,51.9776,-115.1285,8.0000,51.9776,-115.1134,8.0000,51.9866,-115.1891,7.0000'''
linelist = linelist.split(',')
print(linelist)

col1 = [float(x)%1 for x in linelist]
col2 = [float(x)%2 for x in linelist]
col3 = [float(x)%3 for x in linelist]
print(col1,col2,col3)
datadict = {'col1':col1, 'col2':col2, 'col3':col3}
import pandas as pd
df = pd.DataFrame(datadict)