基于具有条件的其他列中的值在中添加列

2024-04-19 14:17:41 发布

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

我有一个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,保留那些有几行的单元,然后提取与最小日期相关的单元的信息。然后将此表与原始表合并,只保留合并后的两个表中日期不同的行。 我觉得有一个非常简单的方法可以做到这一点,但我不知道怎么做


Tags: 方法信息dataframe产品unit单位nanyear
1条回答
网友
1楼 · 发布于 2024-04-19 14:17:41

使用^{}^{}^{}将新的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

相关问题 更多 >