首页 > 解决方案 > 如何最好地创建一个新列,其中每个值都由当前行和其他行确定?

问题描述

这只是一个示例数据框:

df = pd.DataFrame([[0, 234, 1000], [1, 324, 1015], [2, 343, 1045]], columns = ["num", "num1", "num2"])
    num num1 num2
0   0   234  1000
1   1   324  1015
2   2   343  1045

我想创建第四列,其中包含 num1 列的当前值,以及 num1 的两个先前值,但前提是这些值大于 300。

我在某种程度上尝试了这个答案:Apply function to pandas dataframe row using values in other rows

但是,我不确定如何以前两行是否大于某个数字为条件。

标签: pythonpandas

解决方案


我可以为每行的下 2 个值而不是前 2 个值执行此操作,可能其他人可以弄清楚。

df['val'] = df.apply(lambda x: [val for i,val in enumerate(df['num1'][x.name:x.name+3].to_list()) if val >=300 or i==0], axis=1)

print(df)

输出

   num  num1    num2    val
0   0   123     1000    [123, 324]
1   0   234     1000    [234, 324, 343]
2   1   324     1015    [324, 343]
3   2   343     1045    [343]
4   0   123     1000    [123]

推荐阅读