将两个不同的数据框相乘 - Python

问题描述 投票:0回答:1

我有两张桌子:

表1:(销售额)

代码 2025 2026 2027
123 20000 21000 22000
456 10000 12000 14000

表2:(通货膨胀)

代码 2020 2021 2022 2023 2024 2025 2026 2027 2028
123 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4
456 0.55 0.65 0.75 0.85 1 1.2 1.3 1.4 1.5

通过使用Python,我想通过通货膨胀来更新表(1)的值。例如,对于代码“123”,年份“2025”,在通货膨胀前等于 20000。该值(20000)需要根据表(2)中的通货膨胀率进行更新,该通货膨胀率等于 1.1(表中第 123 行与第 2025 列的交集) (2))。其他值也一样。

结果表(1)应该是:

代码 2025 2026 2027
123 22000 25200 28600
456 12000 15600 19600
python pandas dataframe indexing inflate
1个回答
0
投票

您可以使用 df.columns 并将其相乘:

import pandas as pd


sales = {
    'Code': [123, 456],
    2025: [20000, 10000],
    2026: [21000, 12000],
    2027: [22000, 14000]
}


inflation = {
    'Code': [123, 456],
    2020: [0.6, 0.55],
    2021: [0.7, 0.65],
    2022: [0.8, 0.75],
    2023: [0.9, 0.85],
    2024: [1, 1],
    2025: [1.1, 1.2],
    2026: [1.2, 1.3],
    2027: [1.3, 1.4],
    2028: [1.4, 1.5]
}

dfs = pd.DataFrame(sales)
dfi = pd.DataFrame(inflation)


dfs.set_index('Code', inplace=True)
dfi.set_index('Code', inplace=True)

for year in dfs.columns:
    dfs[year] *= dfi[year]

dfs.reset_index(inplace=True)


print(dfs)

打印

   Code     2025     2026     2027
0   123  22000.0  25200.0  28600.0
1   456  12000.0  15600.0  19600.0

© www.soinside.com 2019 - 2024. All rights reserved.