按年份分组和其他列,并根据特定条件的熊猫计算平均值

时间:2020-01-25 16:14:27

标签: pandas pandas-groupby

我有一个如下所示的数据框

Tenancy_ID      Unit_ID             End_Date       Rental_value
1               A                   2012-04-26     10
2               A                   2012-08-27     20
3               A                   2013-04-27     50
4               A                   2014-04-27     40
1               B                   2011-06-26     10
2               B                   2011-09-27     30
3               B                   2013-04-27     60
4               B                   2015-04-27     80

从上面我想在下面的数据框里准备

预期输出:

Unit_ID   Avg_2011   Avg_2012  Avg_2013  Avg_2014   Avg_2015
A         NaN            15        50        40         NaN
B         20             NaN       60        NaN        80

步骤:

  • Unit_ID = A,2012年有两份合同,租金分别为10和20,因此平均为15。

  • 2012年平均租金= 2012年的平均租金价值。

2 个答案:

答案 0 :(得分:4)

直接将pivot_tables.dt.year一起使用

[AuthorizeProperty("Boss")]
public double Salary { get; set; }

#df['End_Date']=pd.to_datetime(df['End_Date']) if dtype of End_Date is not datetime

final = (df.pivot_table('Rental_value','Unit_ID',df['End_Date'].dt.year)
        .add_prefix('Avg_').reset_index().rename_axis(None,axis=1))

答案 1 :(得分:3)

您可以汇总平均值并通过Series.unstack进行整形,最后更改列名称通过DataFrame.add_prefix以及最近的数据清除-DataFrame.reset_index使用DataFrame.rename_axis

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="button" class="onoff" style="margin-left:100px">
<input type="checkbox" id="tool_closed_onoff" name="tool_closed_onoff" style="width:20px; height:20px;" />
<label for="tool_closed_onoff" /></label>
</div>

<br /><br />

<div id="select" style="margin-left:100px">
<select>
  <option value="No option" selected="selected">No option</option>
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>
</select>
</div>
相关问题