在 PANDAS 中每第 n 行转置一列中的数据
Transpose the data in a column every nth rows in PANDAS
对于一个研究项目,我需要将网站上每个人的信息处理成一个 excel 文件。我已将我需要的所有内容从网站复制并粘贴到 excel 文件中的单个列中,并使用 PANDAS 加载该文件。但是,我需要水平展示每个人的信息,而不是像现在这样垂直展示。
例如,这就是我现在拥有的。我只有一列未组织的数据。
df= pd.read_csv("ior work.csv", encoding = "ISO-8859-1")
数据:
0 Andrew
1 School of Music
2 Music: Sound of the wind
3 Dr. Seuss
4 Dr.Sass
5 Michelle
6 School of Theatrics
7 Music: Voice
8 Dr. A
9 Dr. B
我想每 5 行转置一次,将数据组织成这种组织格式;下面的标签是列的标签。
Name School Music Mentor1 Mentor2
最有效的方法是什么?
如果没有数据丢失,可以使用numpy.reshape
:
print (np.reshape(df.values,(2,5)))
[['Andrew' 'School of Music' 'Music: Sound of the wind' 'Dr. Seuss'
'Dr.Sass']
['Michelle' 'School of Theatrics' 'Music: Voice' 'Dr. A' 'Dr. B']]
print (pd.DataFrame(np.reshape(df.values,(2,5)),
columns=['Name','School','Music','Mentor1','Mentor2']))
Name School Music Mentor1 Mentor2
0 Andrew School of Music Music: Sound of the wind Dr. Seuss Dr.Sass
1 Michelle School of Theatrics Music: Voice Dr. A Dr. B
通过 shape
除以列数生成新 array
的 length
的更通用解决方案:
print (pd.DataFrame(np.reshape(df.values,(df.shape[0] / 5,5)),
columns=['Name','School','Music','Mentor1','Mentor2']))
Name School Music Mentor1 Mentor2
0 Andrew School of Music Music: Sound of the wind Dr. Seuss Dr.Sass
1 Michelle School of Theatrics Music: Voice Dr. A Dr. B
感谢 提供另一个解决方案:
print (pd.DataFrame(df.values.reshape(-1, 5),
columns=['Name','School','Music','Mentor1','Mentor2']))
对于一个研究项目,我需要将网站上每个人的信息处理成一个 excel 文件。我已将我需要的所有内容从网站复制并粘贴到 excel 文件中的单个列中,并使用 PANDAS 加载该文件。但是,我需要水平展示每个人的信息,而不是像现在这样垂直展示。 例如,这就是我现在拥有的。我只有一列未组织的数据。
df= pd.read_csv("ior work.csv", encoding = "ISO-8859-1")
数据:
0 Andrew
1 School of Music
2 Music: Sound of the wind
3 Dr. Seuss
4 Dr.Sass
5 Michelle
6 School of Theatrics
7 Music: Voice
8 Dr. A
9 Dr. B
我想每 5 行转置一次,将数据组织成这种组织格式;下面的标签是列的标签。
Name School Music Mentor1 Mentor2
最有效的方法是什么?
如果没有数据丢失,可以使用numpy.reshape
:
print (np.reshape(df.values,(2,5)))
[['Andrew' 'School of Music' 'Music: Sound of the wind' 'Dr. Seuss'
'Dr.Sass']
['Michelle' 'School of Theatrics' 'Music: Voice' 'Dr. A' 'Dr. B']]
print (pd.DataFrame(np.reshape(df.values,(2,5)),
columns=['Name','School','Music','Mentor1','Mentor2']))
Name School Music Mentor1 Mentor2
0 Andrew School of Music Music: Sound of the wind Dr. Seuss Dr.Sass
1 Michelle School of Theatrics Music: Voice Dr. A Dr. B
通过 shape
除以列数生成新 array
的 length
的更通用解决方案:
print (pd.DataFrame(np.reshape(df.values,(df.shape[0] / 5,5)),
columns=['Name','School','Music','Mentor1','Mentor2']))
Name School Music Mentor1 Mentor2
0 Andrew School of Music Music: Sound of the wind Dr. Seuss Dr.Sass
1 Michelle School of Theatrics Music: Voice Dr. A Dr. B
感谢
print (pd.DataFrame(df.values.reshape(-1, 5),
columns=['Name','School','Music','Mentor1','Mentor2']))