【发布时间】:2022-10-16 01:04:08
【问题描述】:
我想添加一系列列,其值由当前年份的一组布尔列(在本例中为 y0、y1、y2、y3)中存在的日期偏移量确定。
考虑以下数据框
import pandas as pd
import numpy as np
# Raw Data
years = ["2000", "2001", "2002", "2003"]
num_combos = len(years)
products = ["A"] * num_combos
bools = [True, False, True, False]
bools1 = [False, True, False, np.nan]
bools2 = [True, False, np.nan, np.nan]
bools3 = [False, np.nan, np.nan, np.nan]
values = [100, 97, 80, np.nan]
cols = {"years": years,
"products": products,
"y0": bools,
"y1": bools1,
"y2": bools2,
"y3": bools3,
"value": values}
df = pd.DataFrame(cols)
df[["y0", "y1", "y2", "y3"]] = df[["y0", "y1", "y2", "y3"]].astype(float)
考虑 2000 年
y0 为 1,因此 2000 年的值 (value_0) 为 100 y1 为 0,因此未来一年后 2000 年的值 (value_1) 为 NaN y2 为 1,因此 2000 年两年后的值(value_2)是 2002 年的值,即 80 等
这将产生以下数据框。
df["value_0"] = [100, np.nan, 80, np.nan]
df["value_1"] = [np.nan, 80, np.nan, np.nan]
df["value_2"] = [80, np.nan, np.nan, np.nan]
df["value_3"] = [np.nan, np.nan, np.nan, np.nan]
有没有使用 apply 或 np.where 确定这些列的巧妙方法? (或替代)
【问题讨论】:
标签: python pandas dataframe numpy apply