python - 如何制作一列列的元素并从熊猫中的另一列获取值?
问题描述
我有一个数据框“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
解决方案
这是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
推荐阅读
- comparator - 具有链式比较运算符的语言
- android - 在 CSS 像素、iOS 点和 Android dp 之间转换
- python - 将两个数据框与重复的列结合起来
- sql - 我对此脚本的引用有问题
- spring - 利用 spring 减少数据库调用
- javascript - CSSStyleDeclaration 的 getPropertyValue() 和括号符号 [] 之间有区别吗?
- c# - 如何在winforms中修复实时图表上的黑色/负背景
- javascript - 如何在 2 个元素中切换活动类
- java - java.time:获取两个 LocalTime 对象之间小时差的最简单方法
- python - 如何暂停网络爬虫程序