【问题标题】:Pandas- update value in a specific column based on duplicate rowsPandas-根据重复行更新特定列中的值
【发布时间】:2021-06-21 11:39:08
【问题描述】:

我有一个公寓楼销售的 pandas 数据库,一列是价格,另一列是销售日期。其中一些销售是针对多处房产的,但每处房产列出的价格反映了多处房产的总售价。这些捆绑交易可以通过销售日期进一步识别。

例如:

Address Price Date Sold Tax Assessed Value
301-303 EAST 4TH STREET 3672530 11/24/2020 3420000
9 AVENUE B 1250000 06/16/2020 650000
11 AVENUE B 1250000 06/16/2020 800000
231-233 EAST 4TH STREET 2500000 06/16/2020 5111000

到目前为止,我已经使用以下方法识别了数据框中的所有重复项:

df[df.duplicated(['Price', 'Date Sold'], keep = False)]

返回:

Address Price Date Sold Tax Assessed Value
9 AVENUE B 1250000 06/16/2020 650000
11 AVENUE B 1250000 06/16/2020 800000

数据库中有许多捆绑交易,包含不同数量的建筑物。我想通过使用捆绑包的总税收评估价值乘以价格值的比例来估算和更新捆绑包中每个建筑物的价格。

例如。 (650000/(650000+800000))*1250000 = 560344.8

所以,我最终会得到:

Address Price Date Sold Tax Assessed Value
9 AVENUE B 560344.8 06/16/2020 650000
11 AVENUE B 689655.2 06/16/2020 800000

我之前发现了一些关于如何替换整行或一列值的问题,但最终在识别每个捆绑包和计算比例时我很迷茫。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    试试:

    df['Price'] *= (df['Tax Assessed Value'] / 
                    df.groupby(['Price', 'Date Sold'])['Tax Assessed Value'].transform('sum') 
                   )
    

    但我认为您需要准确识别重复项的含义

    【讨论】:

    • 这完全符合预期,非常感谢您的帮助!显然,关于使用数据框,我还有很多东西要学习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2019-10-12
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多