python 根据条件将列相乘

sf6xfgos  于 2022-11-28  发布在  Python
关注(0)|答案(2)|浏览(161)

在Python中,有没有一种方法可以根据另一列中的值动态地将列相乘?如果有区别的话,我会使用Polars。例如,如果calendar_year是2018,我想将2018201920202021列相乘,但如果calendar_year是2019,我只想将列201920202021相乘。我想将结果存储在一个名为product的新列中。将来,我们将有更多的列,如20222023。所以我希望能够让我的公式说明这些新列,而不必每年进入代码库并手动将它们添加到我的产品中。
| 标识符|一个人。|日历年|二〇一七年|二〇一八年|二〇一九年|小行星2020|小行星2021|积|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|
| 一百二十三|一个人。|二〇一八年|零点九九八|零点九九七|零点九九六|零点九九五|零点九九四|0.9801分|
| 四百五十六|一个人。|二〇一九年|零点九九三|零点九九二|0.991分|零点九九零|0.989分|0.9557分|
提前感谢您的帮助!

lvjbypge

lvjbypge1#

看起来您希望将超出calendar_year的所有年份的CY因子相乘,而不必为每一年更新此逻辑。
如果是这种情况,避免对CY选择进行硬编码的一种方法是使用melt并过滤结果。
第一个
从那里,您可以将结果联接回原始数据集(使用id列)。

46scxncf

46scxncf2#

我想你可以用np.where(condition,then,else)函数来完成这个操作。你想用这个操作的结果创建一个新列吗?

df['2018_result'] = np.where(df.calendar_year.isin(['2019','2020','2021']),df.2019*df.2020*df.2021, 'add more calculations')

如果你能提供更多的细节就太好了:)

相关问题