我有以下数据框:
import pandas as pd
data = pd.DataFrame()
data['Home'] = ['A','B','C','D','E','F']
data['HomePoint'] = [3,0,1,1,3,3]
data['Away'] = ['B','C','A','E','D','D']
data['AwayPoint'] = [0,3,1,1,0,0]
我想按列['Home'、'Away']分组,并将名称更改为Team。然后我喜欢将原点和awaypoint相加作为点的名称。
Team Points
A 4
B 0
C 4
D 1
E 4
F 3
我怎么做?我尝试了不同的方法,使用下面的帖子:Link
但我无法得到我想要的格式。
非常感谢你的建议。
谢谢
泽普。
您可以成对连接输入数据帧的列。然后使用groupby。求和
。
# calculate number of pairs
n = int(len(df.columns)/2)+1)
# create list of pairwise dataframes
df_lst = [data.iloc[:, 2*i:2*(i+1)].set_axis(['Team', 'Points'], axis=1, inplace=False) \
for i in range(n)]
# concatenate list of dataframes
df = pd.concat(df_lst, axis=0)
# perform groupby
res = df.groupby('Team', as_index=False)['Points'].sum()
print(res)
Team Points
0 A 4
1 B 0
2 C 4
3 D 1
4 E 4
5 F 3
一个简单的方法是创建两个由团队索引的新系列:
home = pd.Series(data.HomePoint.values, data.Home)
away = pd.Series(data.AwayPoint.values, data.Away)
然后,您想要的结果是:
home.add(away, fill_value=0).astype(int)
请注意,主客场
不起作用,因为F队从未踢过客场比赛,所以会给他们造成NaN。所以我们使用系列。使用
填充值=0添加()。
一种复杂的方法是使用
DataFrame。melt()
:
goo = data.melt(['HomePoint', 'AwayPoint'], var_name='At', value_name='Team')
goo.HomePoint.where(goo.At == 'Home', goo.AwayPoint).groupby(goo.Team).sum()
或者从另一个角度来看:
ooze = data.melt(['Home', 'Away'])
ooze.value.groupby(ooze.Home.where(ooze.variable == 'HomePoint', ooze.Away)).sum()
当我分组和求和时,我怎样才能绕过这个并保留C栏呢?
我有一个类的列表,它具有以下属性: 现在,我想按(字符串)对列表进行分组,并获得的总和,该总和将成为每个的新。 因为我使用的是Java 8,所以应该是应该走的路。 Groupby应该使用以下代码非常简单: 如果我想通过SmartNo分组并在SettlementAmount上求和后获得一个新列表,该怎么办?这里的大多数例子只展示了如何打印出总和。我感兴趣的是如何获得聚合列表?
我有一堆数据帧,我连接成一个大数据帧。所有行都有一个datetime、一个名称,然后是一些具有随机值的列,例如,数据帧可以如下所示: 现在,我需要按对这些行进行分组,并将它们分成60分钟的bins,我目前的做法如下: 这可以用任何方式来完成吗?或者我必须将我的数据帧一分为二,然后在之后加入?
Java8在收集器中提供了一个groupingBy函数,但它给出了元素的映射。我需要把地图转换成单个列表。 它还返回结果,但我想要的是对列表本身执行分组操作,这样我就不必重新分配它,因为在lambda表达式中不可能重新分配。 但是nodelistgrouped.values()返回Collection(List)
问题内容: 我有 我想要 问题答案:
问题内容: 我有第1列和第2列,并希望将它们合并到同一表的第3列中。如果第2列为空,则显示第1列的值;如果第1列为空,则它们显示第2列的数据。如果它们都为空,则显示为空。我尝试了两件事: 1)使用CONCAT 。 仅当两个列都不为null时,它才合并列。否则,它只是将null声明为null。 2)使用(第1栏+第2栏)。 。 没有显示所需的输出。 我正在用Java编写此代码。谢谢 问题答案: us