python - 从同一数据框中选择不同年份的值
问题描述
我有一些特征和相应年份的数据框。该特征的每个值都针对不同的年份列出。我需要将特定年份的值与 7 年前的值进行比较。所以基本上我需要定义一个函数,它将生成两列,一列将给出表中特定年份的特征值,另一列给出相同特征但 7 年前的值。我怎样才能做到这一点?
feature year
value1 2001
value1 2008
vlaue2 1996
ETC
例如,我想value1(2008)
与value1(2008 - 7)
等进行比较。还应该有一些条件语句,因为 2000 年不能与 (2000-7 =1993) 进行比较,因为例如 (1993) 年的功能没有价值。
解决方案
这是我从您的问题中了解到的快速解决方案,
import numpy as np
import pandas as pd
data = {'feature': ['A', 'B', 'C', 'A'],
'value': [1, 10, 3, 50],
'year':[2001, 2002, 2003, 2008]}
df = pd.DataFrame(data)
def compFeature(df, f, y):
if df[(df.feature == f) & (df.year == (y-7))].year is not None:
now = df[(df.feature == f) & (df.year == y)].value
old = df[(df.feature == f) & (df.year == (y-7))].value
result = np.subtract(now,old)
else:
result = np.nan
return result
这只是为了让你开始。
推荐阅读
- java - Jenkins Android jobs with Gradle error, Jacoco debugging
- oracle - Using Oracle Data Integrator 12c with Snowflake
- python - Python - Extracting weight from a column (containing a string) in a Pandas DataFrame using regex and adding it to a new column
- python - 使用 Spotipy API 循环遍历数据框和搜索轨道?
- javascript - 如何比较两个对象数组并纠正相同的键值?
- amazon-web-services - 是否可以在网关 VPC 端点前面放置网络负载均衡器?
- java - 无法在 Ubuntu 中使用 Java Mail 发送邮件
- html - 如何为手机添加响应式按钮?按钮需要堆叠成一列。有困难
- python - Scipy Stats Wilcoxon X 和 Y 必须是一维误差
- php - Laravel 中的 withTest1($a) 和 compact($a) 有什么区别?