应用具有空值的欧氏距离函数 - Scipy
Apply euclidean distance function with null values - Scipy
我从一个单独的问题中得到了这个函数:。以下函数测量按 time
和 ids
分组的对象之间的距离。我遇到的问题是没有足够的坐标。出现 运行 时间错误
RuntimeWarning: Mean of empty slice.(np.array(list(zip(x['x'], x['y']))))
我希望在发生这种情况时传递 0。
import pandas as pd
from scipy import spatial
import numpy as np
time = [0, 0, 0, 0, 1, 1, 1]
x = [216, 218, 217, 280, 290, 130, 132]
y = [13, 12, 12, 110, 109, 3, 56]
car = [1, 2, 3, 1, 3, 4, 5]
ids = ['a', 'b', 'a', 'a', 'b', 'b', 'a']
df = pd.DataFrame({'time': time, 'x': x, 'y': y, 'car': car, 'ids': ids})
df = (df.groupby(['time','ids'])
.apply(lambda x: spatial.distance.pdist
(np.array(list(zip(x['x'], x['y']))))
.mean())
.reset_index()
)
预期输出:
time ids 0
0 0 a 78.042816
1 0 b 0
2 1 a 0
3 1 b 191.927069
在 lambda 函数中添加条件是一个技巧:
(df.groupby(['time','ids'])
.apply(lambda x: spatial.distance.pdist
(np.array(list(zip(x['x'], x['y'])))).mean() if len(x)>1 else 0)
.reset_index()
)
time ids 0
0 0 a 78.042816
1 0 b 0.000000
2 1 a 0.000000
3 1 b 191.927069
我从一个单独的问题中得到了这个函数:time
和 ids
分组的对象之间的距离。我遇到的问题是没有足够的坐标。出现 运行 时间错误
RuntimeWarning: Mean of empty slice.(np.array(list(zip(x['x'], x['y']))))
我希望在发生这种情况时传递 0。
import pandas as pd
from scipy import spatial
import numpy as np
time = [0, 0, 0, 0, 1, 1, 1]
x = [216, 218, 217, 280, 290, 130, 132]
y = [13, 12, 12, 110, 109, 3, 56]
car = [1, 2, 3, 1, 3, 4, 5]
ids = ['a', 'b', 'a', 'a', 'b', 'b', 'a']
df = pd.DataFrame({'time': time, 'x': x, 'y': y, 'car': car, 'ids': ids})
df = (df.groupby(['time','ids'])
.apply(lambda x: spatial.distance.pdist
(np.array(list(zip(x['x'], x['y']))))
.mean())
.reset_index()
)
预期输出:
time ids 0
0 0 a 78.042816
1 0 b 0
2 1 a 0
3 1 b 191.927069
在 lambda 函数中添加条件是一个技巧:
(df.groupby(['time','ids'])
.apply(lambda x: spatial.distance.pdist
(np.array(list(zip(x['x'], x['y'])))).mean() if len(x)>1 else 0)
.reset_index()
)
time ids 0
0 0 a 78.042816
1 0 b 0.000000
2 1 a 0.000000
3 1 b 191.927069