gpt4 book ai didi

python - Pandas DataFrame 重新索引到最近的

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:02 26 4
gpt4 key购买 nike

我在下面添加了一个“非均匀列采样”案例。

均匀列采样

想象一下下面的数据集:

         x    y
t
0.010 1.0 NaN
0.015 NaN 5.0
0.022 3.0 NaN
0.023 NaN 4.0
0.031 5.0 NaN
0.032 NaN 7.0

目标是重新索引该数据到一个公共(public)采样间隔,并关联最近的采样点。即,返回:

         x    y
t
0.01 1.0 5.0
0.02 3.0 4.0
0.03 5.0 7.0

我尝试使用 pandas DataFrame.reindex 方法进行此操作。但是,它似乎不起作用。这是一个例子:

import pandas as pd
import numpy as np

data_dict = {'t':[0.01 , 0.015 , 0.022 , 0.023 , 0.031 , 0.032],
'x':[ 1 , np.nan, 3 , np.nan, 5 , np.nan],
'y':[np.nan, 5 , np.nan, 4 , np.nan, 7] }
df = pd.DataFrame(data_dict)
df.set_index('t', inplace=True)
df.reindex([0.01, 0.02, 0.03], method='nearest', tolerance=0.01)

结果是:

        x   y
t
0.01 1.0 NaN
0.02 3.0 NaN
0.03 5.0 NaN

我的问题是:

  1. 这是 reindex 方法的预期用例吗
  2. 如何实现?

非均匀列采样

想象一下这个数据集:

         x    y
t
0.010 1.0 NaN
0.022 3.0 NaN
0.023 NaN 5.0
0.031 5.0 NaN
0.039 NaN 7.0
0.041 4.0 NaN

在这种情况下,列的采样频率确实不同,但我们希望将它们重新索引到一个共同的时间尺度。如何应用重建索引来获得以下内容:

         x    y
t
0.010 1.0 NaN
0.020 3.0 5.0
0.030 5.0 NaN
0.040 4.0 7.0

同样的两个问题。

最佳答案

您可以对每列进行重新索引,预先删除 NaN,然后​​将这些片段重新组合在一起:

t = [0.01, 0.02, 0.03]
df2 = pd.concat(
map(lambda c: df[c].dropna().reindex(t, method='nearest', tolerance=0.01),
df.columns),
axis=1
)

关于python - Pandas DataFrame 重新索引到最近的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840608/

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