繁体   English   中英

Pandas 如何使用列值作为另一行的索引

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM