Python 如何使一列的元素成为列,并从中的另一列获取值?

Python 如何使一列的元素成为列,并从中的另一列获取值?,python,pandas,Python,Pandas,我有一个数据帧“iris”,它有三个不同的物种,如何创建一个数据帧 所有不同的种类作为列名,萼片长度作为值 设置: import numpy as np import pandas as pd df = sns.load_dataset('iris') print(df.head()) sepal_length sepal_width petal_length petal_width species 0 5.1 3.5 1

我有一个数据帧“iris”,它有三个不同的物种,如何创建一个数据帧 所有不同的种类作为列名,萼片长度作为值

设置:

import numpy as np
import pandas as pd

df = sns.load_dataset('iris')

print(df.head())
   sepal_length  sepal_width  petal_length  petal_width species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa

我可以手工做 这是一个漫长而艰难的过程,我正在寻找一些groupby方法,它可以在一个操作中完成这项工作,可能使用chain

seto = df.loc[df['species']=='setosa','sepal_length']
ver = df.loc[df['species']=='versicolor','sepal_length']
vir = df.loc[df['species']=='virginica','sepal_length']

ans = pd.DataFrame({'setosa': seto.values,'versicolor':ver.values,'virginica':vir.values})

print(ans.head())
所需输出
这是透视表:

df.pivot_table(index=df.groupby('species').cumcount(),
               columns='species',
               values='sepal_length',
               aggfunc='first'
              )
输出(总人数):

df.pivot_table(index=df.groupby('species').cumcount(),
               columns='species',
               values='sepal_length',
               aggfunc='first'
              )
species  setosa  versicolor  virginica
0           5.1         7.0        6.3
1           4.9         6.4        5.8
2           4.7         6.9        7.1
3           4.6         5.5        6.3
4           5.0         6.5        6.5
5           5.4         5.7        7.6