繁体   English   中英

从 dataframe 中的列中获取第一个和最后一个值

[英]Get the first and last value from column in dataframe

我想获取每一列的第一个和最后一个值,这是一个有效值,表示 integer 或浮点值。

例如从下面的代码

    import pandas as pd
    
    #create DataFrame
    df = pd.DataFrame({'T1': [nan, 12, 15, 23, 19, 23, 25, 29, nan, nan, 0, nan, nan, 0],
                       'T2': [nan, nan, 7, 7, 9, 12, 9, 9, nan, 0, nan, nan, nan, nan],
                       'T3': [nan, nan, nan, nan, 11, 8, 10, 6, 6, 5, 9, 12, nan, nan]})
    
    
    #view DataFrame
    df
    
        T1     T2   T3
    0   NaN    NaN  NaN
    1   12     NaN  NaN
    2   15     7    NaN
    3   23     7    NaN
    4   19     9    11
    5   23     12   8
    6   25     9    10
    7   29     9    6
    8   NaN   NaN   6
    9   NaN    0    5
    10  0     NaN   9
    11  NaN   NaN   12
    12  NaN   NaN   NaN
    13  0     NaN   NaN

The output that I wish to get is 
the first and last value of T1 thus - [12,0]
the first and last value of T2 thus - [7,0]
the first and last value of T3 thus - [11,12]

这只是一个示例数据集,我有一个包含 6000 行的 dataframe,我想找到每列的第一个和最后一个值,其中我也将NaN作为值。 我也不知道我的第一个值或最后一个值的索引。

我努力了

  • df.iloc[-1,0]
  • df['T1'].iloc[0]

还有一些来自Link1Link2的其他人,但没有任何成功。 我也想获得第一个元素而不是最小值。

我不确定这是否是最有效的方法。 但这是一个使用pd.DataFrame.isna()跳过nan的简单单行

first, last = df.T1[~df.T1.isna()].values[[0, -1]]

您可以使用~df.isna()到 select 不是 NaN 的列。

df[~df['T1'].isna()].iloc[0, 0]
df[~df['T1'].isna()].iloc[0, 0]

...等等

ffillbfill值然后只取第一行和最后一行:

result = df.bfill().ffill()[::df.shape[0]-1]

OUTPUT:

      T1   T2    T3
0   12.0  7.0  11.0
13   0.0  0.0  12.0

而且,现在您可以使用iat获取单个值

result.iat[0,0], result.iat[-1,0]
#output:
(12.0, 0.0)

PS:始终建议使用iat访问特定行和列索引处的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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