例如,从下面的代码
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行的数据框,我想找到每列的第一个和最后一个值,其中我还有NaN
作为值。我也不知道我的第一个值或最后一个值的索引。
我试过了
df。iloc[-1,0]
很少有人来自Link1,Link2,但没有任何成功。我还想得到第一个元素,而不是最小值。
ffill
和bill
的值然后只取第一行和最后一行:
result = df.bfill().ffill()[::df.shape[0]-1]
输出:
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
来访问特定行和列索引处的值。
可以使用~df.isna()
选择非NaN的列。
df[~df['T1'].isna()].iloc[0, 0]
df[~df['T1'].isna()].iloc[0, 0]
...等等
我不确定这是否是最有效的方法。但是这里有一个使用pd的简单单行程序。数据帧。isna()
跳过nan
s
first, last = df.T1[~df.T1.isna()].values[[0, -1]]
问题内容: 我有按日期索引的熊猫。有许多列,但仅在部分时间序列中填充了许多列。我想找到非值第一个和最后一个值的位置,以便提取日期并查看特定列的时间序列有多长时间。 有人能指出我正确的方向,如何去做这样的事情吗?提前致谢。 问题答案: @ behzad.nouri的解决方案完美工作,返回第一个和最后不使用Series.first_valid_index和Series.last_valid_index
问题内容: 如何在where子句中使用下个月的第一天和最后一天? 问题答案: 采用:
如果我有一个双打数组: 我想得到第一个元素和最后一个元素,这样 我该怎么做?
问题内容: 我正在尝试编写这样的日历功能 是整数(1、2、3 …),$ day是一天(Sun,Mon,…)或数字,以较容易的一个为准。方向有些混乱,因为它进行了不同的计算。 举个例子 它使用默认值,并获得5月的第一个星期日,即2009-05-03。如果我们打电话 ,它将返回5月的第二个最后一个星期日,即2009-05-24。 问题答案: 也许可以使其更快。。。 代码非常有趣。 请注意,前进1表示反
问题内容: 有没有办法只分割列表中的第一项和最后一项? 例如; 如果这是我的清单: 我 想 这样做(显然是无效的语法): 我尝试过的一些方法: 问题答案: 单程: 更好的方法(不使用切片,但更易于阅读):
我使用的是Apache Spark,它的数据帧如下所示: 我想按字段分组,以获得的所有历元时间戳。然后我想按时间戳升序对历代进行排序,然后取第一个和最后一个历代。 我使用了下面的查询,但是和历元值似乎是按照它们在原始数据帧中出现的顺序获取的。我想把第一个和最后一个从一个有序的升序中取出来。 如何从按升序历元排序的历元列表中检索第一个和最后一个历元?