gpt4 book ai didi

pandas - 为 pandas DataFrame 设置新索引(插值?)

转载 作者:行者123 更新时间:2023-12-02 18:24:13 24 4
gpt4 key购买 nike

我有一个 DataFrame,其中索引不是时间。我需要将所有值从不等间距的旧索引重新调整为具有不同限制且等间距的新索引。

列中的第一个和最后一个值应保持原样(尽管它们将分配有新的、延伸的索引值)。

示例代码是:

import numpy as np
import pandas as pd
%matplotlib inline

index = np.asarray((2, 2.5, 3, 6, 7, 12, 15, 18, 20, 27))
x = np.sin(index / 10)

df = pd.DataFrame(x, index=index)
df.plot();

newindex = np.linspace(0, 29, 100)

如何创建索引为 newindex 且新 x 值是从旧 x 值插入的 DataFrame?

第一个新的 x 值应与第一个旧的 x 值相同。最后一个 x 值也是如此。也就是说,开头不应有 NaN,末尾不应重复最后一个旧 x 的副本。

其他的应该进行插值以适应新的等间距索引。

我尝试了 df.interpolate() 但无法弄清楚如何针对 newindex 进行插值。

预先感谢您的帮助。

最佳答案

这很有效:

import numpy as np
import pandas as pd

def interp(df, new_index):
"""Return a new DataFrame with all columns values interpolated
to the new_index values."""
df_out = pd.DataFrame(index=new_index)
df_out.index.name = df.index.name

for colname, col in df.iteritems():
df_out[colname] = np.interp(new_index, df.index, col)

return df_out

关于pandas - 为 pandas DataFrame 设置新索引(插值?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48068938/

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