[英]Pandas How to use a column value as an index to another row
我有以下代码行
df["high_int"] = df.Slope * (df.index - df.max_idx) + df,loc['max_idx', 'High]
max_idx 包含一段时间内最高点的索引,例如:15 或 30。
I have tried .loc, .iloc, .at, .iat .get, .shift(), as well as df['max_idx'].map(df['High'])
大多数错误似乎与使用系列而不是 int(在 .iloc 的情况下)或类似的有关。 在我看来,这应该是一项微不足道的任务。 我错过了一些明显的东西吗?
提前致谢
最后一部分没有意义, 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.