gpt4 book ai didi

python - 根据特定的月份值和以另一列为条件过滤 Pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:07 24 4
gpt4 key购买 nike

我有一个包含以下头部的大型数据框

import pandas as pd
f = pd.Dataframe(columns=['month', 'Family_id', 'house_value'])

月份从 0 到 239,Family_id 到 10900,房屋值(value)各不相同。所以数据框有超过 250 万行。

我只想过滤那些每个家庭的最终房价与其初始价格之间存在差异的数据框。

一些示例数据如下所示:

f = pd.DataFrame({'month': [0, 0, 0, 0, 0, 1, 1, 239, 239], 'family_id': [0, 1, 2, 3, 4, 0, 1, 0, 1], 'house_value': [10, 10, 5, 7, 8, 10, 11, 10, 11]})

从该示例中,生成的数据框将是:

g = pd.DataFrame({'month': [0, 1, 239], 'family_id': [1, 1, 1], 'house_value': [10, 11, 11]})

所以我想在代码中应该是这样的:

ft = f[f.loc['month'==239, 'house_value'] > f.loc['month'==0, 'house_value']]

也试过这个:

g = f[f.house_value[f.month==239] > f.house_value[f.month==0] and f.family_id[f.month==239] == f.family_id[f.month==0]]

并且上面的代码给出了错误Keyerror: FalseValueError的任何想法。谢谢。

最佳答案

使用groupby.filter:

(f.sort_values('month')
.groupby('family_id')
.filter(lambda g: g.house_value.iat[-1] != g.house_value.iat[0]))

# family_id house_value month
#1 1 10 0
#6 1 11 1
#8 1 11 239

正如@Bharath 评论的那样,您的方法出错了,因为对于 bool 过滤器,它期望 bool 系列具有与原始数据框相同的长度,由于您应用的过滤过程,这在您的两种情况下都不正确比较前。

关于python - 根据特定的月份值和以另一列为条件过滤 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com