Python 根据其他行计算列
我需要根据另一行计算一列。基本上,我希望我的新列是具有相同id的所有行的“基本列”之和 我目前正在做以下工作(但不是真正有效的)实现这一目标最有效的方法是什么Python 根据其他行计算列,python,pandas,Python,Pandas,我需要根据另一行计算一列。基本上,我希望我的新列是具有相同id的所有行的“基本列”之和 我目前正在做以下工作(但不是真正有效的)实现这一目标最有效的方法是什么 def计算(x): filtered_df=df[[“id”]==dataset.at[x.name,“id”].#事实上,我的过滤器更复杂,在过去的4周里,基本上相同的id和日期 df.at[x.name,“new_column”]=filtered_df[“base_column”].sum() 应用(计算) 另一种方法是使用grou
def计算(x):
filtered_df=df[[“id”]==dataset.at[x.name,“id”].#事实上,我的过滤器更复杂,在过去的4周里,基本上相同的id和日期
df.at[x.name,“new_column”]=filtered_df[“base_column”].sum()
应用(计算)
另一种方法是使用groupby
和merge
import pandas as pd
df = pd.DataFrame({'id':[1,1,2],'base_column':[2,4,5]})
# compute sum by id
sum_base =df.groupby("id").agg({"base_column": 'sum'}).reset_index().rename(columns={'base_column':'new_column'})
# join the result to df
df = pd.merge(df,sum_base,how='left',on='id')
# id base_column new_column
#0 1 2 6
#1 1 4 6
#2 2 5 5
你可以在下面做一个练习
df['new_column']= df.groupby('id')['base_column'].transform('sum')
输入
id base_column
0 1 2
1 1 4
2 2 5
3 3 6
4 5 7
5 7 4
6 7 5
7 7 3
id base_column new_column
0 1 2 6
1 1 4 6
2 2 5 5
3 3 6 6
4 5 7 7
5 7 4 12
6 7 5 12
7 7 3 12
输出
id base_column
0 1 2
1 1 4
2 2 5
3 3 6
4 5 7
5 7 4
6 7 5
7 7 3
id base_column new_column
0 1 2 6
1 1 4 6
2 2 5 5
3 3 6 6
4 5 7 7
5 7 4 12
6 7 5 12
7 7 3 12
你的问题是什么?