【问题标题】:Creating matrix in python with pandas and numpy使用 pandas 和 numpy 在 python 中创建矩阵
【发布时间】:2021-03-24 10:12:29
【问题描述】:

我面临的问题是在 python 中创建一个除法但它相乘的矩阵。

我有两个数据框:
df_in = pd.DataFrame([[77.279999], [80.099998]], index=[2019, 2020], columns=['Price']) df_out = pd.DataFrame([[71.849998], [77.400002]], index=[2019, 2020], columns=['Price])

现在我将创建矩阵:
df_matrix = pd.DataFrame(np.outer(df_in, df_out), df_in.index, df_out.index)

我得到的输出是:

<style type="text/css">
    table.tableizer-table {
        font-size: 12px;
        border: 1px solid #CCC; 
        font-family: Arial, Helvetica, sans-serif;
    } 
    .tableizer-table td {
        padding: 4px;
        margin: 3px;
        border: 1px solid #CCC;
    }
    .tableizer-table th {
        background-color: #104E8B; 
        color: #FFF;
        font-weight: bold;
    }
</style>
<table class="tableizer-table">
<thead><tr class="tableizer-firstrow"><th></th><th>2019</th><th>2020</th></tr></thead><tbody>
 <tr><td>2019</td><td>5552.567794</td><td>5755.184768</td></tr>
 <tr><td>2020</td><td>5981.472023</td><td>6199.740004</td></tr>
</tbody></table>

它是乘法而不是除法。我面临的下一个问题是,如果

df_in.index > df_out.index

那么值应该是0。

我希望看到的结果是:

<style type="text/css">
    table.tableizer-table {
        font-size: 12px;
        border: 1px solid #CCC; 
        font-family: Arial, Helvetica, sans-serif;
    } 
    .tableizer-table td {
        padding: 4px;
        margin: 3px;
        border: 1px solid #CCC;
    }
    .tableizer-table th {
        background-color: #104E8B; 
        color: #FFF;
        font-weight: bold;
    }
</style>
<table class="tableizer-table">
<thead><tr class="tableizer-firstrow"><th></th><th>2019</th><th>2020</th></tr></thead><tbody>
 <tr><td>2019</td><td>1,075574</td><td>1,114822</td></tr>
 <tr><td>2020</td><td>0</td><td>1,034883</td></tr>
</tbody></table>

所以感谢大家的建议。

【问题讨论】:

    标签: python pandas numpy matrix


    【解决方案1】:

    你可以divide.outer:

    pd.DataFrame(np.divide.outer(df_in,df_out)[:,0,:,0], df_in.index, df_out.index)
    

    输出:

              2019      2020
    2019  1.075574  0.998450
    2020  1.114823  1.034884
    

    【讨论】:

    • 完美,非常感谢。你有一个想法,如果 y > x 它不会除,所以 1.114823 是 N/A 或 0?
    • np.triu
    猜你喜欢
    • 2014-06-20
    • 2014-07-21
    • 2016-05-22
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2020-05-11
    • 2020-04-25
    • 2011-07-08
    相关资源
    最近更新 更多