最大元素熊猫系列中的所有列表

时间:2018-02-01 01:56:26

标签: python pandas series

我有一个熊猫系列说

import pandas as pd
a = pd.Series([
    [1, 2, 3, 4, 5],
    [6, 7, 8, 3, 334],
    [333, 4, 5, 3, 4]
])

我想找到所有列表中最大的元素,即334,这样做的简单方法是什么?

4 个答案:

答案 0 :(得分:2)

选项1
仅在元素实际为list时才有效。这是因为sum连接列表。这也可能非常缓慢。

max(a.sum())

334

选项2
最小的两层应用max

max(map(max, a))

334

选项3
仅在所有列表长度相同时才有效

np.max(a.tolist())

334

选项4
max在展开的发电机上的一个应用

max(x for l in a for x in l)

334

答案 1 :(得分:1)

这是一种方式:

max(max(i) for i in a)

功能变体:

max(map(max, a))

仅计算一个max的替代方法:

from toolz import concat

max(concat(a))

下面是一些基准测试的乐趣。惰性函数concat和优化的map /列表理解做得最好,然后来numpy函数,pandas方法通常更糟糕,聪明的sum应用程序最后。

import numpy as np
from toolz import concat
import pandas as pd

a = pd.Series([list(np.random.randint(0, 10, 100)) for i in range(1000)])

# times in ms
5.92  max(concat(a))
6.29  max(map(max, a))
6.67  max(max(i) for i in a)
17.4  max(x for l in a for x in l)
19.2  np.max(a.tolist())
20.4  np.concatenate(a.values).max()
64.6  pd.DataFrame(a.values.tolist()).max().max()
373   np.max(a.apply(pd.Series).values)
672   max(sum(a,[]))
696   max(a.sum())

答案 2 :(得分:1)

到数据框

pd.DataFrame(a.values.tolist()).max().max()
Out[200]: 334

numpy.concatenate

np.concatenate(a.values).max()
Out[201]: 334

max(sum(a,[]))
Out[205]: 334

答案 3 :(得分:0)

使用np.max的另一个答案:

import numpy as np
np.max(a.apply(pd.Series).values)
Out[175]: 334