如何使用groupby提取某些数据并使用提取的数据创建新列?

时间:2019-12-28 03:49:27

标签: python pandas numpy data-manipulation data-cleaning

enter image description here

所以我有电影名称,日期,收入累积的数据集。同一部电影有多行,并且有一列显示累计收入。我想提取某部电影的最新累计收入,并新建一个列,然后将提取的值插入某部电影的第一行。 例如,我想知道如何提取电影“ a”的最后一次收入,电影“ b”的最后一次收入..并将这些值插入每部电影的新列的第一行中。因此,在图片中,这将是电影a的D2,电影33的D33等...

df['Date'] = pd.to_datetime(df['Date']) df = df.sort_values('Date') df.groupby('Movie name')['Revenue accumulated'].last()

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作。但我建议您将其替换为np.nan(即不为空白),因为这应该是最后的数字列。

def get_last_as_first(grp):
  return  pd.Series([grp.iloc[-1]] + [np.nan]*(grp.shape[0]-1))

df['Date'] = pd.to_datetime(df['Date']) 
df = df.sort_values('Date')
new_col = df.groupby('Movie name')['Revenue accumulated'].transform(get_last_as_first)