我正在尝试查找数据框中列的计算最大值。为此,我创建计算列,然后对其调用 max()
。
df['二'] = df['一']/df['一'].index
最大值 = df['two'].max()
这是一个缓慢的操作,我想知道是否可以通过避免计算列的内存使用来优化它,并在跟踪其最大值的同时动态计算列。我可以在普通 python 中做到这一点,但我想要 pandas 的效率。
感谢任何可以帮助我的人!
最佳答案
我们可以尝试作弊,但我们需要知道确切的公式/算法。
在您的示例中,无需存储列即可完成:
maximum = (df.a/df.index).max()
如果是更复杂的计算,您可以使用.assign()
方法:
maximum = df.assign(two=df.a/df.index)['two'].max()
测试:
In [19]: df
Out[19]:
a b c
0 0 9 3
1 7 6 5
2 4 5 8
3 0 4 3
4 7 4 5
5 0 9 9
6 7 5 2
7 4 4 4
8 1 3 3
9 3 1 3
10 6 6 1
11 8 4 0
12 6 2 9
13 4 1 0
14 8 5 9
In [20]: df.assign(two=df.a/df.index)['two'].max()
Out[20]: 7.0
In [21]: (df.a/df.index).max()
Out[21]: 7.0
关于Python Pandas 是否可以在生成的序列中找到最大值,而无需将序列存储到内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37124433/