[英]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]
我不确定这是否是最有效的方法。 但这是一个使用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]
...等等
ffill
和bfill
值然后只取第一行和最后一行:
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.