如何为每一组groupbyPandas做滚动“得到假人”

2024-10-16 17:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的数据帧

   A             B          
Customer_1    1000      
Customer_1    2000      
Customer_1    3000      
Customer_2    2000      
Customer_2    3000      
Customer_3    1000      
Customer_3    3000      

我想像下面这样转换上面的数据帧,我怎样才能使它?你知道吗

A             B           3000      2000    1000
Customer_1    1000         0         0       1
Customer_1    2000         0         1       1
Customer_1    3000         1         1       1
Customer_2    2000         0         1       0
Customer_2    3000         1         1       0
Customer_3    1000         0         0       1
Customer_3    3000         1         0       1

我不知道怎么做,请帮助我在这个问题上,让我知道如果你需要澄清。你知道吗


Tags: 数据customer
1条回答
网友
1楼 · 发布于 2024-10-16 17:21:37

使用get_dummies,在str访问器中,也使用join合并:

print(df.join(df.B.astype(str).str.get_dummies()))

输出:

            A     B  1000  2000  3000
0  Customer_1  1000     1     0     0
1  Customer_1  2000     0     1     0
2  Customer_1  3000     0     0     1
3  Customer_2  2000     0     1     0
4  Customer_2  3000     0     0     1
5  Customer_3  1000     1     0     0
6  Customer_3  3000     0     0     1

它真的只是把df01的值合并起来,01是怎么做的?使用get_dummies它可以自己完成这一切。你知道吗

编辑:

print(df.join(df.join(df.groupby('A').apply(lambda x: x['B'].astype(str).str.get_dummies()).fillna(0).astype(int)).groupby('A').cumsum().drop('B',1)))

输出:

            A     B  1000  2000  3000
0  Customer_1  1000     1     0     0
1  Customer_1  2000     1     1     0
2  Customer_1  3000     1     1     1
3  Customer_2  2000     0     1     0
4  Customer_2  3000     0     1     1
5  Customer_3  1000     1     0     0
6  Customer_3  3000     1     0     1

相关问题 更多 >