簡體   English   中英

根據其他具有條件的列的值在 Pandas 中添加列

[英]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.shiftadd_prefixjoin以將新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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM