首页 > 解决方案 > 如何制作一列列的元素并从熊猫中的另一列获取值?

问题描述

我有一个数据框“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 方法,它可能使用链在单个操作中执行此操作。

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.groupby('species')['spepal_length'].SOMETHING.SOMETHING
   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

标签: pythonpandas

解决方案


这是pivot_table

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

推荐阅读