最后一部分没有意义,df.loc[index, columns] 采用索引过滤器、列或列列表,而不是 2 列。另一件事 - 假设你想写 df[["max_id", "High"]] - 它也会失败,因为你不能以这种方式将 2 列强制合并为一列。
将以下内容作为您可以做什么和不能做什么的示例:
>>> df =pd.DataFrame({"Slope": [1,3,2, -5, -23.3], "max_id": [1,1,1,2,2], "High": [3,4,4,4,3]})
>>> df["high_int"] = df.Slope * (df.index - df.max_id)
>>> df
Slope max_id High high_int
0 1.0 1 3 -1.0
1 3.0 1 4 0.0
2 2.0 1 4 2.0
3 -5.0 2 4 -5.0
4 -23.3 2 3 -46.6
>>> df["high_int"] = df.Slope * (df.index - df.max_id) + df[["max_id", "High"]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/9skibi2/miniconda3/envs/airflow2/lib/python3.9/site-packages/pandas/core/frame.py", line 3967, in __setitem__
self._set_item_frame_value(key, value)
File "/home/9skibi2/miniconda3/envs/airflow2/lib/python3.9/site-packages/pandas/core/frame.py", line 4097, in _set_item_frame_value
raise ValueError("Columns must be same length as key")
ValueError: Columns must be same length as key