如果df
看起来像
row col value
0 7 G 96
1 3 C 43
2 7 H 44
3 7 J 97
4 8 I 90
...
而q
是
row col value
0 2 C foo
1 8 F bravo
2 9 F charlie
3 2 D bar
4 2 E qux
...
下面的代码用于此目的,但速度太慢。我如何优化它以运行得更快?当len(df) = 25000
时需要约45秒。我需要解决len(df) >= 1e6
的问题。你知道吗
def foo(a):
try:
fxlter = q.loc[(q.row == a.row) & (q.col < a.col)]
return q.loc[fxlter.col.idxmax()].value
except ValueError:
return None
df['foo'] = df.nodes.apply(foo)
(其目的是通过在q中为df中的每个项目找到最接近的行标签,以通用方式将列名和行名与值匹配)
期望输出:
row col value foo
0 7 G 96 alpha
1 3 C 43 foo
2 7 H 44 alpha
3 7 J 97 alpha
4 8 I 90 bravo
5 3 E 58 foo
6 8 H 95 bravo
7 7 I 49 alpha
8 3 D 22 foo
9 8 J 55 bravo
您可以使用^{} :
相关问题 更多 >
编程相关推荐