almaz Asked:2023-08-10 15:19:20 +0000 UTC2023-08-10 15:19:20 +0000 UTC 2023-08-10 15:19:20 +0000 UTC python pandas如何最好地过滤数据帧数据以找到第一个值 772 import pandas as pd # assign data df_new = pd.DataFrame({'value_1': [4, 1, 7, 2, 3, 0, 10, 1, 9], 'value_2': [6, 5, 4, 6, 7, 3, 5, 2, 3]}) print(df_new) # фильтруем данные по колонке 'value_2' dFilter = df_new[df_new.value_2 > 4] dFilter 任务:如何在不使用循环的情况下仅使用 pandas / numpy 来过滤/仅获取与过滤条件不匹配的第一个值的数据? python 2 个回答 Voted Best Answer strawdog 2023-08-10T15:55:26Z2023-08-10T15:55:26Z 通过分组可以实现: import pandas as pd df_new = pd.DataFrame({'value_1': [4, 1, 7, 2, 3, 0, 10, 1, 9], 'value_2': [6, 5, 4, 6, 7, 3, 5, 2, 3]}) res = df_new.groupby((df_new["value_2"]==4).cumsum()).get_group(0) 资源: value_1 value_2 0 4 6 1 1 5 或者通过定位器和索引: res = df.iloc[:df.index[df_new["value_2"]==4][0]] 通过定位器 和numpy.where,例如: import numpy as np res = df.iloc[:np.where(df_new["value_2"]==4)[0][0]] Алексей Р 2023-08-10T18:17:59Z2023-08-10T18:17:59Z 我们创建一个布尔数组,其中有效值将为 False (条件<=4),通过累加求和并仅保留总和小于 1 的那些行 - 即 第一个有效值保留在框架中。 df_new = df_new[df_new.value_2.le(4).cumsum().lt(1)] value_1 value_2 0 4 6 1 1 5
通过分组可以实现:
资源:
或者通过定位器和索引:
通过定位器 和
numpy.where,例如:我们创建一个布尔数组,其中有效值将为 False (条件
<=4),通过累加求和并仅保留总和小于 1 的那些行 - 即 第一个有效值保留在框架中。