gpt4 book ai didi

Python 按其他列计算列值

转载 作者:行者123 更新时间:2023-12-01 00:01:39 24 4
gpt4 key购买 nike

我有这样的表格:

no  Order   materials   status
1 1000 100 available
2 1000 200 not available
3 1001 500 Feb-20
4 1002 400 available
5 1002 300 not available
6 1002 600 available
7 1002 900 available
8 1003 700 available
9 1003 800 available

我希望有一些列显示:

  1. 每个订单的 Material 总数
  2. 每个订单的 Material 总数及其状态

我能够获取每个订单的 Material 总数:

ds.groupby('Order').count()
ds['Total Materials'] = ds.groupby('Order')['Order'].transform('count')

但不确定如何根据状态等于每个状态的条件添加新列,以便它看起来像这样:

no  Order   materials   status         Total Materials  available   not available   Feb-20
1 1000 100 available 2 1 1 0
2 1000 200 not available 2 1 1 0
3 1001 500 Feb-20 1 0 0 1
4 1002 400 available 4 3 1 0
5 1002 300 not available 4 3 1 0
6 1002 600 available 4 3 1 0
7 1002 900 available 4 3 1 0
8 1003 700 available 2 2 0 0
9 1003 800 available 2 2 0 0

基本上是想弄清楚如何获取其余的列。感谢您的帮助!

最佳答案

我会结合使用数据透视表合并:

ds_final = ds.merge(ds.pivot_table(values='Total Materials',index=['Order'],columns='status',aggfunc='count',fill_value=0).reset_index(),how='left',on='Order')
print(ds_final)

输出:

   no  Order  materiales  status  Total Materials  A  Feb-20  not A
0 1 1000 100 A 2 1 0 1
1 2 1000 200 not A 2 1 0 1
2 3 1001 500 Feb-20 1 0 1 0
3 4 1002 400 A 4 3 0 1
4 5 1002 300 not A 4 3 0 1
5 6 1002 600 A 4 3 0 1
6 7 1002 900 A 4 3 0 1
7 8 1003 700 A 2 2 0 0
8 9 1003 800 A 2 2 0 0

一些额外的解释:

数据透视表有助于从 status 列生成列。所以这是单独的数据透视表的输出:

status  Order  A  Feb-20  not A
0 1000 1 0 1
1 1001 0 1 0
2 1002 3 0 1
3 1003 2 0 0

最后,通过此输出,我们可以使用 mergeconcat 来生成所需的输出。

关于Python 按其他列计算列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com