繁体   English   中英

将先前计费数据的行扩展为列。 Python Pandas

[英]Expanding rows of previous billing data into columns. Python Pandas

我正在尝试从前几个月的计费费用中构建功能,因此我当前的数据看起来像这样,而我要创建的列是“PreviousFee”。 我还希望能够将其扩展到两个月前、三个月前等。

谢谢!

data = {'CustomerName': ['Alligators','Alligators', 'Alligators', 'Alligators','Bricks', 'Bricks', 'Bricks', 'Bricks', 'Bricks', 'Bricks'], 
        'ServiceID': [1001, 1002, 1001, 1002, 2001, 2002, 2003, 2001, 2002, 2003], 
        'Product': ['Apples', 'Bananas', 'Apples', 'Bananas', 'Oranges', 'Apples', 'Bananas', 'Oranges', 'Apples', 'Bananas'], 
        'Month': ['Jan', 'Jan', 'Feb', 'Feb', 'Jan', 'Jan', 'Jan', 'Feb', 'Feb', 'Feb'], 
        'Year': [2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021],
        'Fee': [12, 17, 10, 34, 12, 56, 67, 23, 56, 34],
        'PreviousFee': ['na', 'na', 12, 37, 'na', 'na', 'na', 12, 56, 67]}
df = pd.DataFrame(data)
df

在此处输入图像描述

只需使用groupby()shift就可以了

df['PrevFeeGrp'] = df.groupby(['CustomerName', 'ServiceID', 'Product'])['Fee'].shift(1)

CustomerName    ServiceID   Product Month Year  Fee PreviousFee PrevFeeGrp
0   Alligators  1001        Apples  Jan 2021    12    na    NaN
1   Alligators  1002        Bananas Jan 2021    17    na    NaN
2   Alligators  1001        Apples  Feb 2021    10    12    12.0
3   Alligators  1002        Bananas Feb 2021    34    37    17.0
4   Bricks  2001            Oranges Jan 2021    12    na    NaN
5   Bricks  2002            Apples  Jan 2021    56    na    NaN
6   Bricks  2003            Bananas Jan 2021    67    na    NaN
7   Bricks  2001            Oranges Feb 2021    23    12    12.0
8   Bricks  2002            Apples  Feb 2021    56    56    56.0
9   Bricks  2003            Bananas Feb 2021    34    67    67.0

如果您想提前 2 个月获得,只需执行.shift(2) 记得事先对你的 df 进行排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM