gpt4 book ai didi

python - 使用 Float64Index 时如何移动 DataFrame 的索引?

转载 作者:行者123 更新时间:2023-11-28 18:31:35 25 4
gpt4 key购买 nike

正如问题所述,我有一个 pandas (v. 0.18.0) 数据框,它由几列一维数据(模拟光谱)组成。

示例数据集如下所示:

Photon Energy (eV),  Spin_Up (a.u.),  Spin_Down (a.u.),       Difference  
1.520040, 0.000000, 0.00000, 0.000000
1.520515, 0.000000, 0.00000, 0.000000
1.520990, 0.000000, 0.00000, 0.000000
1.521465, 9.742188, 0.00000, 9.742188
1.521940, 35.432140, 24.41665, 11.015490
1.522415, 69.708160, 99.48898, -29.780820
1.522890, 140.897400, 198.71710, -57.819700
1.523365, 369.593200, 401.61710, -32.023900
1.523840, 1688.481000, 1034.93300, 653.548000
1.524315, 1822.535000, 4645.04600, -2822.511000
1.524790, 1284.102000, 5457.34800, -4173.246000

数据是直接从CSV导入的(pd.read_csv('sample.csv', index_col='Photon Energy (eV)'),导入的三个列是一个索引行(具有六位小数精度的光子能量)和两个电子数量(整数值)。

现在,我想将索引列移动 ~2.5meV(对应于 200 行)。

我已经通过以下方式达到了最高点:

abs_max = df.loc[1.52:1.53,["Sum"]].idxmax()
shift_idx = df.index.get_loc(abs_max[0])
shift_amt = int(shift_idx - spdf.index.get_loc(1.515005))

然后尝试使用 df.shift(periods=shift_amt) 应用转换(我意识到 shift_amt 上的 int() 是不必要的,只是试图涵盖所有基础)。这似乎没有效果(索引列未移动)。尝试将值应用于 shift() 函数内的 freq 没有任何区别。当我使用 df.index.shift() 尝试同样的事情时,我得到了一个错误 NotImplementedError: Not supported for type Float64Index。我认为这意味着我正在尝试做的事情是不可能的,我应该回去使用一个简单的整数索引列。但是,在我放弃之前,我想知道在这个过程中我是否遗漏了什么。

最佳答案

您可以像这样更改您的索引值:

df.index += x

关于python - 使用 Float64Index 时如何移动 DataFrame 的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com