我对Python和熊猫相当陌生,有一个问题我不太确定如何解决。我有一个熊猫DataFrame,其中包含在同一年为多支球队效力的曲棍球运动员:
Player Season Team GP G A TP
Player A 2020 A 10 8 3 11
Player A 2020 B 25 10 5 15
Player A 2020 C 6 4 7 11
Player B 2020 A 30 20 6 26
Player B 2020 B 25 18 5 23
我希望能够合并包含同一年的同一名球员的行,并按球员为其效力最多的球队排列列。在上面的例子中,B队的所有数字都是第一位的,因为球员A为B队打了最多的比赛,其次是A队,然后是C队。如果一名球员没有为多个队打过球或少于三个队打过球,我希望在给定的列中填写NA。
例如上面的df会变成(Team1代表最高团队):
Player Season Team1 GP1 G1 A1 TP1 Team2 GP2 G2 A2 TP2 Team3 GP3 G3 A3 TP3
Player A 2020 B 25 10 5 15 A 10 8 3 11 C 6 4 7 11
Player B 2020 A 30 20 6 26 B 25 18 5 23 NA NA NA NA NA
我能想到的解决这个问题的最初方法是使用一系列groupby max,但我不确定这是否会达到预期的效果。任何帮助都将不胜感激!
您可以排序,然后旋转:
a=(df.sort_values('GP')
.assign(col=df.groupby(['Player','Season']).cumcount()+1)
.pivot_table(index=['Player','Season'], columns='col', aggfunc='first')
)
# rename:
a.columns = [f'{x}{y}' for x,y in a.columns]
我有一张这样的桌子 基于以上数据,我需要得到这样一个表 我不知道如何使用一些PIVOT来实现这一点
我已经用id、app和客户输入了下面的dataframe 输入数据规则 预期产出 使用pivot和groggrege-make app值作为列名,并将聚合的客户名作为数据表中的列表 val newDF=df.groupby(“id”).pivot(“app”).agg(expr(“coalesce(first(customer),0)”)).drop(“app”).show() 问题:在我的查询中
我正在尝试将列中的值透视到列标题,但保留其余数据。这是我的完整代码,以及我能得到的最接近我正在寻找的内容。唯一的问题是我无法弄清楚如何保留列: 原始数据帧: 我最近的支点尝试: 电流输出: 期望输出: 这个和这个我都试过了,没有成功。 任何帮助都将不胜感激。
我在 spark 中有一个数据帧: 此处,所有列均为字符串数据类型。 如何在多列中使用分解功能,并创建如下所示的新数据框: 在新的数据帧中,所有列都是字符串数据类型。
假设我有三个不同的MySQL表: 表: 表: 表: 我想要得到一个表,合作伙伴在行和产品作为列。到目前为止,我能够得到如下输出: 使用此查询: 但我更想要这样的东西: 问题是,我无法告诉我将拥有多少个产品,因此需要根据products表中的行动态更改列号。 这个很好的答案似乎并不适用于MySQL:T-SQL Pivot?从行值创建表列的可能性
问题内容: 可以说我有三个不同的MySQL表: 表: 表: 表: 我想得到一个表格,其中行和产品列为合作伙伴。到目前为止,我已经能够获得如下输出: 使用此查询: 但我想改成这样: 问题是我无法知道我将拥有多少个产品,因此列号需要根据产品表中的行动态更改。 这个很好的答案似乎不适用于mysql:T-SQL Pivot吗?根据行值创建表格列的可能性 问题答案: 不幸的是,MySQL没有您基本上想做的功