首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将来自两个不同pandas数据帧的两列相乘

将来自两个不同pandas数据帧的两列相乘
EN

Stack Overflow用户
提问于 2020-02-05 05:02:25
回答 2查看 243关注 0票数 1

我有一台pandas.DataFrame。

代码语言:javascript
复制
      df1
           Year    Class     Price    EL
           2024     PC1       $243    Base
           2025     PC1       $215    Base
           2024     PC1       $217    EL_1
           2025     PC1       $255    EL_1
           2024     PC2       $217    Base
           2025     PC2       $232    Base
           2024     PC2       $265    EL_1
           2025     PC2       $215    EL_1

我有另一个pandas.DataFrame

代码语言:javascript
复制
           df2  
              Year    Price_factor
              2024      1
              2025      0.98

我想将df2'Price_factor‘应用到df1'Price’列。我试过我的代码,但它不工作。

代码语言:javascript
复制
          df3=df1.groupby(['Class','EL'])['Price']*df2['Price_factor]

提前感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-05 05:16:24

使用map,

代码语言:javascript
复制
df1['Price_factor'] = df1['Year'].map(df2.set_index('Year')['Price_factor'])
df1['Price_adjusted']= df1['Price'].str.strip('$').astype(int) * df1['Price_factor']
df1

输出:

代码语言:javascript
复制
|    |   Year | Class   | Price   | EL   |   Price_factor |   Price_adjusted |
|----|--------|---------|---------|------|----------------|------------------|
|  0 |   2024 | PC1     | $243    | Base |           1    |           243    |
|  1 |   2025 | PC1     | $215    | Base |           0.98 |           210.7  |
|  2 |   2024 | PC1     | $217    | EL_1 |           1    |           217    |
|  3 |   2025 | PC1     | $255    | EL_1 |           0.98 |           249.9  |
|  4 |   2024 | PC2     | $217    | Base |           1    |           217    |
|  5 |   2025 | PC2     | $232    | Base |           0.98 |           227.36 |
|  6 |   2024 | PC2     | $265    | EL_1 |           1    |           265    |
|  7 |   2025 | PC2     | $215    | EL_1 |           0.98 |           210.7  |
票数 2
EN

Stack Overflow用户

发布于 2020-02-05 05:15:01

您不需要groupby,而是合并两个表,然后将列相乘。为了能够计算新价格,我必须将原始价格列转换为浮点数,方法是删除$-符号并使用.astype(float)

代码语言:javascript
复制
import pandas as pdb

# df1 = pd.read_clipboard()
# df2 = pd.read_clipboard()

df3 = df1.merge(df2, how='left', on="Year")
df3['New Price'] = df3['Price'].str[1:].astype(float) *df3['Price_factor']
print(df3)
代码语言:javascript
复制
   Year Class Price    EL  Price_factor  New Price
0  2024   PC1  $243  Base          1.00     243.00
1  2025   PC1  $215  Base          0.98     210.70
2  2024   PC1  $217  EL_1          1.00     217.00
3  2025   PC1  $255  EL_1          0.98     249.90
4  2024   PC2  $217  Base          1.00     217.00
5  2025   PC2  $232  Base          0.98     227.36
6  2024   PC2  $265  EL_1          1.00     265.00
7  2025   PC2  $215  EL_1          0.98     210.7
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60065499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档