python - Pandas DataFrame 跨行条件

标签 python pandas dataframe

我有这个示例数据框:

df = pd.DataFrame({
    'year': [1987, 1987, 1988, 1988, 1989, 1989], 
    'product':['p1', 'p2', 'p1', 'p2', 'p1', 'p2'], 
    'price': [25, 30, 28, 29, 27, 30],
})

提取特定年份产品价格高于(或低于)上一年值(value)的行的最佳方法是什么?例如,1988 年 p1 的价格高于 1987 年。 我的真实数据分布了很多年,一些新产品在某些年份进入市场,而其他一些产品可能会停产。

最佳答案

您可以使用pandas.DataFrame.groupbypandas.DataFrame.shift 结合像这样:

>>> df = df.sort_values(by=['product', 'year'])
>>> df[df.price > df.groupby('product').price.shift()]
   year product  price
2  1988      p1     28
5  1989      p2     30

基本上,您可以按产品对数据进行分组,并通过 shift() 方法找出之前的值。为了确保您查看的是上一年的值,我建议首先对数据框中的值进行排序。

关于python - Pandas DataFrame 跨行条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68140859/

相关文章:

python - Pandas groupby : get best zscore for counts() of each group

r - 通过在另一个数据框中查找新名称来更改列名称

DataFrames.jl - 按类型或名称子字符串选择列

python - Django 中的设置在运行服务器时重复运行

python - 通过 requirements.txt 在 Azure Databricks 上维护库/包

在Excel中进行单词搜索的Python代码

r - 计算以零为底的累积总和 (cumsum)

python - 计算 Pandas DataFrame 中每一行的频率

python - 如何使用 Selenium 连接到 icloud.com?

json - 从包含 JSON 的 CSV 文件创建 Pandas DataFrame