为什么会这样测向差异给我第四栏的NaN?

2024-10-04 05:22:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

# create dataframes for the lists of arrays (df_Avg_R), list of maxima 
    # (df_peaks) and for the inter-beat-intervals (df_ibi)
    df_Avg_R = pd.DataFrame(Avg_R_val)
    df_idx_max = pd.DataFrame(idx_of_max)
    # delete first and last maxima
    df_idx_max.drop([0, 11], axis=1, inplace=1)
    df_ibi = df_idx_max.diff(axis=1)

df\u idx\u max是以下数据帧(仅第一行):

         1    2    3      4      5      6      7      8      9   10
0    55   92  132  181.0  218.0  251.0    NaN    NaN    NaN NaN
1    84  140  198  235.0  251.0    NaN    NaN    NaN    NaN NaN
2    47   64  103  123.0  185.0  251.0    NaN    NaN    NaN NaN
3    58  102  146  189.0  251.0    NaN    NaN    NaN    NaN NaN
4    53   96  139  182.0  201.0  225.0  251.0    NaN    NaN NaN
5    46   89  131  173.0  215.0  251.0    NaN    NaN    NaN NaN
6    67  121  161  175.0  231.0  251.0    NaN    NaN    NaN NaN
7    52  109  165  206.0  220.0  251.0    NaN    NaN    NaN NaN
8    80  135  191  251.0    NaN    NaN    NaN    NaN    NaN NaN
9    38   83  139  188.0  251.0    NaN    NaN    NaN    NaN NaN
10   33   73  113  161.0  205.0  251.0    NaN    NaN    NaN NaN
11   54   81  126  153.0  180.0  204.0  251.0    NaN    NaN NaN
12   44   64  116  160.0  206.0  251.0    NaN    NaN    NaN NaN
13   56  109  165  220.0  251.0    NaN    NaN    NaN    NaN NaN
14   43  100  124  155.0  211.0  251.0    NaN    NaN    NaN NaN

但是命令df_ibi=df_idx_最大差值(axis=1)在所有的 第四纵队

  1     2     3   4     5     6     7     8     9   10
0   NaN  37.0  40.0 NaN  37.0  33.0   NaN   NaN   NaN NaN
1   NaN  56.0  58.0 NaN  16.0   NaN   NaN   NaN   NaN NaN
2   NaN  17.0  39.0 NaN  62.0  66.0   NaN   NaN   NaN NaN
3   NaN  44.0  44.0 NaN  62.0   NaN   NaN   NaN   NaN NaN
4   NaN  43.0  43.0 NaN  19.0  24.0  26.0   NaN   NaN NaN
5   NaN  43.0  42.0 NaN  42.0  36.0   NaN   NaN   NaN NaN
6   NaN  54.0  40.0 NaN  56.0  20.0   NaN   NaN   NaN NaN
7   NaN  57.0  56.0 NaN  14.0  31.0   NaN   NaN   NaN NaN
8   NaN  55.0  56.0 NaN   NaN   NaN   NaN   NaN   NaN NaN
9   NaN  45.0  56.0 NaN  63.0   NaN   NaN   NaN   NaN NaN
10  NaN  40.0  40.0 NaN  44.0  46.0   NaN   NaN   NaN NaN
11  NaN  27.0  45.0 NaN  27.0  24.0  47.0   NaN   NaN NaN
12  NaN  20.0  52.0 NaN  46.0  45.0   NaN   NaN   NaN NaN
13  NaN  53.0  56.0 NaN  31.0   NaN   NaN   NaN   NaN NaN
14  NaN  57.0  24.0 NaN  56.0  40.0   NaN   NaN   NaN NaN

你知道为什么会这样吗?谢谢


Tags: andofthe代码dataframedffornan
2条回答

我觉得这有点像虫子,看看这个issue。您可以使用以下代码暂时解决此问题:

df.T.diff().T

你的数据应该是:

df_idx_max.T.diff().T

让我知道它是否有效。你知道吗

如果将整个数据帧转换为浮点数,它应该可以正常工作:

df_idx_max = df_idx_max.astype(float, errors='ignore')

df_ibi = df_idx_max.diff(axis=1)

相关问题 更多 >