[英]Adding column in pandas with several conditions based on other columns in dataframe
[英]Adding column in pandas based on values from other columns with conditions
我有一個dataframe
其中包含有關某些產品(單位)的銷售信息:
unit year month price
0 1 2018 6 100
1 1 2013 4 70
2 2 2015 10 80
3 2 2015 2 110
4 3 2017 4 120
5 3 2002 6 90
6 4 2016 1 55
我想為每筆銷售添加包含有關先前銷售和 NaN(如果沒有先前銷售)的信息的列。
unit year month price prev_price prev_year prev_month
0 1 2018 6 100 70.0 2013.0 4.0
1 1 2013 4 70 NaN NaN NaN
2 2 2015 10 80 110.0 2015.0 2.0
3 2 2015 2 110 NaN NaN NaN
4 3 2017 4 120 90.0 2002.0 6.0
5 3 2002 6 90 NaN NaN NaN
6 4 2016 1 55 NaN NaN NaN
目前我正在對單元進行一些grouping
,保留那些有幾行的單元,然后提取與最小日期相關聯的這些單元的信息。 然后將此表與我的原始表連接,僅保留已合並的 2 個表中具有不同日期的行。 我覺得有一種非常簡單的方法可以做到這一點,但我不確定如何。
使用DataFrameGroupBy.shift
和add_prefix
並join
以將新DataFrame
附加到原始數據:
#if real data are not sorted
#df = df.sort_values(['unit','year','month'], ascending=[True, False, False])
df = df.join(df.groupby('unit', sort=False).shift(-1).add_prefix('prev_'))
print (df)
unit year month price prev_year prev_month prev_price
0 1 2018 6 100 2013.0 4.0 70.0
1 1 2013 4 70 NaN NaN NaN
2 2 2015 10 80 2015.0 2.0 110.0
3 2 2015 2 110 NaN NaN NaN
4 3 2017 4 120 2002.0 6.0 90.0
5 3 2002 6 90 NaN NaN NaN
6 4 2016 1 55 NaN NaN NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.