gpt4 book ai didi

python - Pandas 返回条件值

转载 作者:行者123 更新时间:2023-12-01 02:47:50 26 4
gpt4 key购买 nike

只需要一点帮助来从数据帧返回一些值。

<小时/>

我有一个包含一些值的数据框(称为 df1):

ID      X    Y    Distance   Date
1 1 2 2.2 01/01/2000
2 2 3 1.8 02/02/2001
3 3 4 1.2 03/03/2002
4 4 5 2.7 04/04/2003
5 5 6 3.8 05/05/2004

目前,我有代码创建一个新列 - df1['Within 2k'] - 如果距离在 2 公里以内,则返回 True。例如,这看起来像:

df1['Within 2k'] = df1['distance'] <= 2
print("df1")

ID X Y Distance Date Within 2k
1 1 2 2.2 01/01/2000 False
2 2 3 1.8 02/02/2001 True
3 3 4 1.2 03/03/2002 True
4 4 5 2.7 04/04/2003 False
5 5 6 3.8 05/05/2004 False

我还有代码,如果 ID 和距离不在 2 公里以内,则将它们更改为“空”。例如,这看起来像:

df1['ID'] = np.where((df1['Distance'] <= 2), df1['ID'], "Null")
df1['Distance'] = np.where((df1['Distance'] <= 2), df1['Distance'], "Null")
print(df1)

ID X Y Distance Date
Null 1 2 Null 01/01/2000
2 2 3 1.8 02/02/2001
3 3 4 1.2 03/03/2002
Null 4 5 Null 04/04/2003
Null 5 6 Null 05/05/2004
<小时/>

我的代码的目标是返回距离在 2 公里以内的第一条记录(按时间顺序)。目前我有代码返回日期值最小的值,但其中包括空值。

我现在的代码看起来有点像这样:

Site2km = df1.loc[df1['Date'].idxmin(),'ID']
Dist2km = df1.loc[df1['Date'].idxmin(),'Distance']

return pd.Series([Site2km, Dist2km])

我需要一些代码来:

1) 返回距离小于2的第一个ID和距离

2) 如果表中的每个值都在距离 2km 之外,则 ID 和距离都返回字符串“Null”。

最佳答案

实际上您不需要额外的列:

In [35]: df
Out[35]:
ID X Y Distance Date
0 1 1 2 2.2 2000-01-01
1 2 2 3 1.8 2001-02-02
2 3 3 4 1.2 2002-03-03
3 4 4 5 2.7 2003-04-04
4 5 5 6 3.8 2004-05-05

In [36]: df.loc[df['Distance'] <= 2].nsmallest(1, 'Date')[['ID','Distance']]
Out[36]:
ID Distance
1 2 1.8

更新:

In [47]: df
Out[47]:
ID X Y Distance Date
0 1 1 2 2.2 2000-01-01
1 2 2 3 1.8 2001-02-02
2 3 3 4 1.2 2002-03-03
3 4 4 5 2.7 2003-04-04
4 5 5 6 3.8 2004-05-05

In [48]: r = df.loc[df['Distance'] <= 2].nsmallest(1, 'Date')[['ID','Distance']]

In [49]: r
Out[49]:
ID Distance
1 2 1.8

我们来模拟一下2km内没有任何点的情况:

In [50]: df.Distance += 10

In [51]: r = df.loc[df['Distance'] <= 2].nsmallest(1, 'Date')[['ID','Distance']]

In [52]: r
Out[52]:
Empty DataFrame
Columns: [ID, Distance]
Index: []

In [53]: if r.empty:
...: r.loc[0] = [np.nan, np.nan]
...:

In [54]: r
Out[54]:
ID Distance
0 NaN NaN

关于python - Pandas 返回条件值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com